les noms de classe et fonction mettant en évidence dans vim
-
09-09-2019 - |
Question
Je viens récemment mis en place mon environnement de TextMate Vim, après être devenu accro à son entrée modale.
Cependant, la coloration syntaxique semble ne pas être si beau dans vim. Code I en C ++ et depuis l'appel de fonction et les noms de classe ne peut pas être mis en évidence, le code est plus difficile à lire. J'ai joué avec jeu de couleurs pour un peu, mais n'a pas pu trouver un champ qui correspond à « nom de la classe » ou « nom de la fonction ».
Dans l'image ci-dessous, remarquez comment DroughtLayer::
et *.size()
ne sont pas mis en évidence sur la droite MacVim.
(source: ivzhao.com )
Toutes les idées comment résoudre ce problème? Il me dérange vraiment que je suis tellement un gars visuel sensible.
La solution
Fait intéressant, la syntaxe surligneurs dans VIM ne supportent pas l'application d'une syntaxe pour les identificateurs ou les noms de fonction - du moins pas la syntaxe surligneurs pour C et C ++. Donc, même si vous le faites:
:hi Function guifg=red
ou
:hi Identifier guifg=red
il ne donne pas ces une couleur. Je semble juste être pas beaucoup plus que des mots clés et des constantes pour ces langues.
Ici, quelqu'un a commencé à étendre le fichier de syntaxe cpp pour soutenir les noms de méthode. C'est un début, je suppose. http://vim.wikia.com/wiki/Highlighting_of_method_names_in_the_definition
Autres conseils
J'ai eu ce même problème quand je commencé à utiliser vim. La solution est simple, il vous suffit de modifier le fichier de syntaxe c utilisé par vim, voici comment faire:
Lorsque vous commencez à éditer un fichier C ou C ++, vim lit le fichier de syntaxe par défaut c situé dans
$VIMRUNTIME/syntax/c.vim
(Où $ VIMRUNTIME est l'endroit où vous avez installé vim Vous pouvez trouver sa valeur par défaut en ouvrant vim et en utilisant la commande. « : Echo $ VIMRUNTIME »).
Vous pouvez simplement écraser ce fichier, ou vous pouvez créer votre fichier de syntaxe C personnalisée (qui sera chargé par vim au lieu du défaut) à cet endroit:
$HOME/.vim/syntax/c.vim (for UNIX)
$HOME/vimfiles/syntax/c.vim (for PC or OS/2)
(je ne l'ai jamais utilisé un Mac alors je sais pas que l'on va travailler pour vous, vous pouvez en savoir plus dans l'aide de vim,. « : Help vimfiles »)
Maintenant, la partie amusante. Copiez la valeur par défaut "$ VIMRUNTIME / syntax / c.vim" fichier dans votre répertoire vimfiles ( "$ HOME / .vim / syntaxe / c.vim" pour UNIX), et le modifier en ajoutant ces lignes:
" Highlight Class and Function names syn match cCustomParen "(" contains=cParen,cCppParen syn match cCustomFunc "\w\+\s*(" contains=cCustomParen syn match cCustomScope "::" syn match cCustomClass "\w\+\s*::" contains=cCustomScope hi def link cCustomFunc Function hi def link cCustomClass Function
Voilà! Maintenant, les fonctions et les noms de classe seront mis en évidence avec la couleur définie dans le point culminant « Fonction » ( « : salut Fonction »). Si vous voulez personnaliser les couleurs, vous pouvez modifier les deux dernières lignes ci-dessus à quelque chose comme ceci:
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00
ou vous pouvez laisser le fichier de syntaxe C seul et définir des couleurs dans votre fichier vimrc ( ": help VIMRC"):
hi cCustomFunc gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00
(Notez l'absence de la "définition" mot-clé, allez dans ": aide highlight-default" pour plus de détails). Pour les paramètres disponibles à la commande ": salut" commande voir ": help: highlight".
Vous pouvez trouver le fichier c.vim complet pour 7.2 Vim sur ce lien (Remarque: utilisez uniquement si vous avez une Vim, version 7.2 non modifiée):
Et la capture d'écran obligatoire:
est mon premier post ici et je ne savais pas comment faire une observation, la réponse d'Eduardo fait « ( » et « { » look unmached et la syntaxe des bugs foldind, je l'ai changé un peu pour résoudre ce problème.
syn match cCustomParen "?=(" contains=cParen,cCppParen
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
syn match cCustomScope "::"
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def link cCustomClass Function
La seule solution consiste à utiliser la base de ctags construit. Donc, créer un avec le ctags utilitaire. Ensuite, la variable « balises » et de mettre ce qui suit à la
~/.vim/after/syntax/c.vim
function! s:highlight()
let list = taglist('.*')
for item in list
let kind = item.kind
if kind == 'f' || kind == 'c'
let name = item.name
exec 'syntax keyword Identifier '.name
endif
endfor
endfunction
call s:highlight()
Je dois vous avertir que cela peut fonctionner très lent sur la base de données de ctags très grand.
Il y a également une solution sur le vim.org mais je n'a pas essayé celui-ci. Faites-moi savoir si cela fonctionne pour vous.
EDIT: color_coded peut être trop lourd pour vous. essayez Octol / vim-cpp amélioré-fort . Il prend en charge 11/14 C ++ et intègre les réponses que @Eduardo.
sémantique base surligneur:
Je recommande jeaye / color_coded ,
Un plugin vim pour base libclang-highlighting
Désolé que je suis nouveau à stackoverflow qui signifie que j'ai réputation ne suffit pas d'afficher des images. Allez voir ses effets si vous voulez donner un coup de feu. :)
Avantages:
- Installation facile
- surlignage sémantique
- Clighter mentionné comme ci-dessus, ont besoin vim compilé avec
python2.7
. Cependant, color_coded est écrit en C ++ et fournit la liaison lua -> C ++.
Moins:
- Il retarde sauf si vous faites des événements vim à acitve il.
- La personnalisation est plus difficile; vous devez modifier la syntaxe / color_coded.vim toi même. Mais la personnalisation a été mis sur sa feuille de route.
Bien qu'il soit encore en cours de développement, il est de plus en plus l'attention gagne.
Sergey, en changeant la première ligne de
syn match cCustomParen "(" contains=cParen,cCppParen
à
syn match cCustomParen "(" contains=cParen contains=cCppParen
semble fixer pour moi.
Essayez d'utiliser ce plugin http://www.vim.org/scripts /script.php?script_id=2646 Sa fait tout ctags mettant en évidence de façon très efficace pour vous
Le Clighter
plug-in peut également être considéré, qui est un
plugin for c-family semantic source code highlighting, based on Clang
Cependant, nécessite des versions assez récentes et logiciels:. vim 7.4.330 +python2
et libclang