Lepsze podświetlanie składni dla Java w Vimie?

16

Zauważyłem, że Vim ma fantastyczne podświetlanie składni za pomocą moich preferowanych schematów kolorów dla Ruby i Python, ale ilekroć muszę pisać kod Java, to tak, jakby nawet nie włączałem podświetlania.

Jak widać, słowa kluczowe są podświetlone, ale nawiasy ani metody nie są wyróżniane. W Sublime Text (o wiele mniej preferowanym przeze mnie edytorze) widzę znacznie lepsze podkreślanie. W nazwach klas występuje kursywa, a dla operatorów matematycznych - wyróżnianie. W porównaniu Vim wygląda na rzadki.

Czy jest jakiś sposób, by w ogóle uzyskać ten wspaniały styl Vim?

kunaicode
źródło
Czy próbowałeś używać trybu Vintage w Sublime Text? Zmienia wszystkie kluczowe przypisania do tych zastosowań vi (m), ale wciąż pozwala na zaawansowane funkcje ST2, takie jak lepsze podświetlanie składni i edycja wielokrotnego wyboru.
MattDMo
2
Mam włączony tryb vintage w ST2, ale nadal wolę Vima, ponieważ mogę go używać w terminalu, z kilkoma otwartymi panelami tmux, dzięki czemu mogę jednocześnie ssh na mojej zdalnej maszynie, nie pozostawiając edytora dłużej niż sekundę.
kunaicode
tak, istnieje niewielka przeszkoda w korzystaniu z edytora GUI ...
MattDMo,

Odpowiedzi:

0

Wystarczy popatrzeć na cSyntaxAfter wtyczki. Podkreśla operatorów i tak dalej.

Inną opcją jest edycja syntax/java.vimskryptu i dodanie wyróżnienia dla Operatorgrupy. Spójrz nasyntax/pascal.vim przykład.

Chcesz używać kursywy do nazw klas, co powinno być możliwe, jeśli plik składni Java rozpoznaje je jako grupę, i myślę, że tak. Wygląda na to, że nazwy klas znajdują się wJavaTypedef grupie.

Musisz wtedy zdefiniować nowe wyróżnienie dla tej grupy. Oznaczałoby to usunięcie linii

JavaHiLink javaTypedef                Typedef

z pliku składni i dodanie nowego. Poniżej ponownie używam deklaracji hightlight dla Type, z którą łączy się Typedef. Zmieniłem termz underlinenaitalic .

Powinieneś umieścić następujące w java.vimpliku składni.

hi javaTypedef term=italic cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE
Roland Smith
źródło
Dzięki za pomoc, ale czy jest / czy są jakieś wtyczki lub wtyczki do wielkich liter w nazwach klas?
kunaicode,
@kunaicode: Nie wiem o tym. Podświetlanie składni nie zmienia znaczenia kodu. Wielkie litery nie. Osobiście natychmiast usunę wtyczkę, która automatycznie zmieni kod, który napisałem.
Roland Smith,
Przepraszam za zamieszanie - miałem na myśli, pisanie kursywą nazw klas. Nie wielkie litery. Przepraszam.
kunaicode
@kunaicode: Zobacz zaktualizowaną odpowiedź.
Roland Smith
2

Wygląda na to, że po prostu nie ma tam bogatego pliku składni.

Ale możemy wycisnąć trochę więcej z dołączonego pliku składni:

let java_highlight_functions = 1
let java_highlight_all = 1
" If you are trying this at runtime, you need to reload the syntax file
set filetype=java

" Some more highlights, in addition to those suggested by cmcginty
highlight link javaScopeDecl Statement
highlight link javaType Type
highlight link javaDocTags PreProc

Pierwsza sztuczka przyszła stąd .

Jeśli ktoś stworzy bogatszy plik składni Java, powinniśmy go dodać do vim-polyglot !

joeytwiddle
źródło
1

Używam domyślnego schematu kolorów base16 w Vimie i z jakiegoś powodu źle definiuje kolory dla Javy. Dodanie następujących wierszy pomoże w uzyskaniu części drogi:

" Java: 'new', 'instanceof'
highlight Operator ctermfg=5  guifg=#d175bc
" Java: 'this', 'super'
highlight Typedef ctermfg=5  guifg=#d175bc
" Java: 'void', 'int', 'double'
highlight Type ctermfg=4  guifg=#69b7d3
" literal numbers
highlight Number term=bold ctermfg=16 gui=bold guifg=#d2d22d
cmcginty
źródło