Une meilleure coloration syntaxique pour Java dans Vim?

16

J'ai trouvé que Vim avait une coloration syntaxique fantastique avec mes schémas de couleurs préférés pour Ruby et Python, mais chaque fois que j'ai besoin d'écrire du code Java, c'est comme si je n'avais même pas activé la surbrillance en premier lieu.

Comme vous pouvez le voir, les mots clés sont mis en évidence, mais il n'y a pas de mise en évidence pour les parenthèses ou les méthodes. Dans Sublime Text (un éditeur que je préfère de loin), je vois beaucoup mieux la mise en évidence. Il y a italique pour les noms de classe et surligné pour les opérateurs mathématiques. Vim semble clairsemé en comparaison.

Existe-t-il un moyen ou un moyen d'obtenir cette mise en valeur succulente de style Sublime Text sur Vim?

kunaicode
la source
Avez-vous essayé d'utiliser le mode Vintage dans Sublime Text? Il modifie toutes les liaisons de touches pour ces utilisations vi (m), mais permet toujours de puissantes fonctionnalités de ST2 comme une meilleure mise en évidence de la syntaxe et une édition à sélection multiple.
MattDMo
2
J'ai le mode vintage activé dans ST2, mais je préfère toujours Vim car je peux l'utiliser dans le terminal, avec plusieurs volets tmux ouverts afin que je puisse ssh dans ma machine distante simultanément sans quitter mon éditeur pendant plus d'une seconde.
kunaicode
oui, il y a ce revers mineur de l'utilisation d'un éditeur GUI ...
MattDMo

Réponses:

0

Jetez un oeil à la plugin cSyntaxAfter . Il met en évidence les opérateurs et ainsi de suite.

Une autre option consiste à modifier le syntax/java.vimscript et à ajouter une surbrillance pour leOperator groupe. Jetez un oeil à syntax/pascal.vimtitre d'exemple.

Si vous voulez utiliser l'italique pour les noms de classe, cela devrait être possible si le fichier de syntaxe java les reconnaît comme un groupe, et je pense que oui. Il semble que les noms de classe soient dans le JavaTypedefgroupe.

Vous devrez alors définir un nouveau surlignage pour ce groupe. Cela signifierait supprimer la ligne

JavaHiLink javaTypedef                Typedef

à partir du fichier de syntaxe et en ajouter un nouveau. Ci-dessous, je réutilise la déclaration hightlight pour Type, à laquelle est lié Typedef. J'ai changé le termde underlineen italic.

Vous devez mettre ce qui suit dans votre java.vimfichier de syntaxe.

hi javaTypedef term=italic cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE
Roland Smith
la source
Merci pour l'aide, mais existe-t-il des plugins ou des plugins pour mettre les noms de classe en majuscule?
kunaicode
@kunaicode: Pas que je sache. La mise en évidence de la syntaxe ne modifie pas la signification du code. La capitalisation le fait. Personnellement, je supprimerais immédiatement un plugin qui changerait automatiquement le code que j'ai écrit.
Roland Smith
Je m'excuse pour la confusion - je voulais dire, mettre en italique les noms de classe. Ne pas capitaliser. Pardon.
kunaicode
@kunaicode: Voir la réponse mise à jour.
Roland Smith
2

Il semble qu'il n'y ait tout simplement pas de fichier de syntaxe riche.

Mais nous pouvons extraire un peu plus le fichier de syntaxe fourni:

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

Le premier tour est venu d' ici .

Si quelqu'un crée un fichier de syntaxe Java plus riche, nous devrions l'ajouter à vim-polyglot !

joeytwiddle
la source
1

J'utilise le jeu de couleurs par défaut base16 dans Vim et pour une raison quelconque, il ne fait pas un bon travail de définition des couleurs pour Java. L'ajout des lignes suivantes vous aidera à y arriver en partie:

" 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
la source