Bessere Syntax-Hervorhebung für Java in Vim?

13

Ich habe festgestellt, dass Vim eine fantastische Syntax-Hervorhebung mit meinen bevorzugten Farbschemata für Ruby und Python bietet, aber wann immer ich Java-Code schreiben muss, habe ich die Hervorhebung überhaupt nicht aktiviert.

Wie Sie sehen, sind Schlüsselwörter hervorgehoben, Klammern oder Methoden sind jedoch nicht hervorgehoben. In Sublime Text (einem von mir weit weniger bevorzugten Editor) sehe ich eine weitaus bessere Hervorhebung. Es gibt Kursivschrift für Klassennamen und Hervorhebungen für mathematische Operatoren. Vim sieht im Vergleich spärlich aus.

Gibt es überhaupt eine Möglichkeit, diese üppige Hervorhebung im Sublime Text-Stil auf Vim zu bringen?

kunaicode
quelle
Haben Sie versucht, mit Vintage-Modus im erhabenen Text? Es ändert alle Tastenkombinationen in die von vi (m) verwendeten, ermöglicht jedoch dennoch leistungsstarke Funktionen von ST2 wie eine bessere Hervorhebung der Syntax und das Bearbeiten von Mehrfachauswahl.
MattDMo
2
Ich habe den Vintage-Modus in ST2 aktiviert, bevorzuge jedoch Vim, da ich ihn im Terminal mit mehreren geöffneten tmux-Fenstern verwenden kann, damit ich gleichzeitig in meinen Remote-Computer ssh kann, ohne meinen Editor länger als eine Sekunde zu verlassen.
kunaicode
Ja, es gibt diesen kleinen Nachteil bei der Verwendung eines GUI-Editors ...
MattDMo

Antworten:

0

Schauen Sie sich das an cSyntaxAfter Plugin. Es zeigt Operatoren und so weiter.

Eine weitere Option ist das Bearbeiten der syntax/java.vim Skript und Hervorhebung für die hinzufügen Operator Gruppe. Schau es dir an syntax/pascal.vim als Beispiel.

Wenn Sie Kursivschrift für Klassennamen verwenden möchten, sollte dies möglich sein, wenn die Java-Syntaxdatei sie als Gruppe erkennt, und ich denke, dass dies der Fall ist. Es scheint, dass Klassennamen in der sind JavaTypedef Gruppe.

Sie müssten dann ein neues Highlight für diese Gruppe definieren. Das würde bedeuten, die Linie zu entfernen

JavaHiLink javaTypedef                Typedef

aus der Syntaxdatei und Hinzufügen eines neuen. Im Folgenden verwende ich die Hightlight-Deklaration für Type, mit der Typedef verknüpft ist. Ich habe das geändert term von underline zu italic.

Sie sollten folgendes in Ihr java.vim Syntaxdatei.

hi javaTypedef term=italic cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE
Roland Smith
quelle
Danke für die Hilfe, aber gibt es ein Plugin oder Plugins, um Klassennamen groß zu schreiben?
kunaicode
@ Kunaicode: Nicht, dass ich wüsste. Die Syntaxhervorhebung ändert nichts an der Bedeutung des Codes. Großschreibung tut. Persönlich würde ich sofort entferne ein Plugin, das automatisch den von mir geschriebenen Code ändert.
Roland Smith
Ich entschuldige mich für die Verwirrung - ich meinte, kursiv schreiben Klassennamen. Nicht groß schreiben. Es tut uns leid.
kunaicode
@ kunaicode: Siehe aktualisierte Antwort.
Roland Smith
1

Ich verwende das Base16-Standardfarbschema in Vim und aus irgendeinem Grund funktioniert es nicht, Farben für Java zu definieren. Das Hinzufügen der folgenden Zeilen hilft dabei, einen Teil des Weges dahin zu finden:

" 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
quelle
1

Es scheint, dass es einfach keine umfangreiche Syntaxdatei gibt.

Aber wir können ein bisschen mehr aus der gebündelten Syntaxdatei herausholen, die wir haben:

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

Der erste Stich kam von Hier .

Wenn jemand jemals eine umfangreichere Java-Syntaxdatei erstellt, sollten wir sie hinzufügen Vim-Polyglot !

joeytwiddle
quelle