Migliore evidenziazione della sintassi per Java in Vim?


16

Ho scoperto che Vim ha un'evidenziazione della sintassi fantastica con i miei schemi di colori preferiti per Ruby e Python, ma ogni volta che ho bisogno di scrivere codice Java, è come se non avessi nemmeno attivato l'evidenziazione in primo luogo.

Come puoi vedere, le parole chiave sono evidenziate, ma non c'è evidenziazione per parentesi o metodi. In Sublime Text (un editor molto meno preferito da me), vedo una migliore evidenziazione. C'è corsivo per i nomi delle classi e l'evidenziazione per gli operatori matematici. Vim sembra scarso in confronto.

Esiste un modo, un modo per ottenere quella succulenta evidenziazione in stile Sublime Text su Vim?


Hai provato a utilizzare la modalità Vintage in Sublime Text? Cambia tutte le combinazioni di tasti con quelle che vi (m) usa, ma consente comunque potenti funzionalità di ST2 come una migliore evidenziazione della sintassi e modifica di selezioni multiple.
MattDMo

2
Ho la modalità vintage abilitata in ST2, ma preferisco ancora Vim perché posso usarlo nel terminale, con diversi riquadri tmux aperti in modo da poter accedere simultaneamente alla mia macchina remota senza lasciare il mio editor per più di un secondo.
kunaicode

sì, c'è una piccola battuta d'arresto nell'uso di un editor GUI ...
MattDMo

Risposte:


0

Dai un'occhiata al plugin cSyntaxAfter . Sottolinea operatori e così via.

Un'altra opzione è quella di modificare lo syntax/java.vimscript e aggiungere l'evidenziazione per il Operatorgruppo. Dai un'occhiata a syntax/pascal.vimun esempio.

Se vuoi usare il corsivo per i nomi delle classi, ciò dovrebbe essere possibile se il file di sintassi java li riconosce come gruppo, e penso che lo faccia. Sembra che i nomi delle classi siano nel JavaTypedefgruppo.

Dovresti quindi definire un nuovo momento saliente per quel gruppo. Ciò significherebbe rimuovere la linea

JavaHiLink javaTypedef                Typedef

dal file di sintassi e aggiungendone uno nuovo. Di seguito sto riutilizzando la dichiarazione hightlight per Type, a cui è collegato Typedef. Ho cambiato il termda underlinea italic.

Dovresti inserire quanto segue nel tuo java.vimfile di sintassi.

hi javaTypedef term=italic cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE

Grazie per l'aiuto, ma ci sono / ci sono plugin o plugin per scrivere in maiuscolo i nomi delle classi?
kunaicode

@kunaicode: Non che io sappia. L'evidenziazione della sintassi non altera il significato del codice. La capitalizzazione lo fa. Personalmente rimuoverei immediatamente un plugin che cambierebbe automaticamente il codice che ho scritto.
Roland Smith,

Mi scuso per la confusione, volevo dire, in corsivo i nomi delle classi. Non capitalizzare. Scusa.
kunaicode

@kunaicode: vedi la risposta aggiornata.
Roland Smith,

2

Sembra che semplicemente non ci sia un ricco file di sintassi là fuori.

Ma possiamo spremere un po 'di più dal file di sintassi in bundle che abbiamo:

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

Il primo trucco è venuto da qui .

Se qualcuno crea un file di sintassi Java più ricco, dovremmo aggiungerlo a vim-polyglot !


1

Sto usando la combinazione di colori di base16 in Vim e per qualche ragione fa un cattivo lavoro nel definire i colori per Java. L'aggiunta delle seguenti righe consentirà di ottenere parte del percorso lì:

" 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.