Je viens de configurer mon environnement Vim depuis Textmate, après être devenu accro à son entrée modale.
Cependant, la coloration syntaxique ne semble pas si belle dans Vim. Je code en C++ et comme l'appel de fonction et les noms de classe ne peuvent pas être mis en évidence, le code est plus difficile à lire. J'ai joué avec le jeu de couleurs pendant un peu, mais je n'ai trouvé aucun champ correspondant à "nom de classe" ou "nom de fonction".
Dans l'image ci-dessous, notez comment DroughtLayer::
Et *.size()
ne sont pas mis en surbrillance à droite dans MacVim.
(source: ivzhao.com )
Des idées pour résoudre ça? Cela m'énerve vraiment car je suis tellement sensible aux visuels.
Fait intéressant, les surligneurs de syntaxe de VIM ne prennent pas en charge l'application d'une syntaxe aux identificateurs ou aux noms de fonction - du moins pas les surligneurs de syntaxe pour C et C++. Donc, même si vous le faites:
:hi Function guifg=red
ou
:hi Identifier guifg=red
cela ne leur donne pas de couleur. Il me semble que ce n'est 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 prendre en charge les noms de méthode. C'est un début je suppose. http://vim.wikia.com/wiki/Highlighting_of_method_names_in_the_definition
J'ai eu ce même problème lorsque j'ai commencé à utiliser vim. La solution est simple, il suffit d'éditer le fichier de syntaxe c utilisé par vim, voici comment procéder:
Lorsque vous commencez à modifier un fichier C ou C++, vim lit le fichier de syntaxe c par défaut situé dans
$VIMRUNTIME/syntax/c.vim
(Où $ VIMRUNTIME est l'endroit où vous avez installé vim. Vous pouvez découvrir 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é (qui sera chargé par vim au lieu du fichier par défaut) à cet emplacement:
$HOME/.vim/syntax/c.vim (for UNIX)
$HOME/vimfiles/syntax/c.vim (for PC or OS/2)
(Je n'ai jamais utilisé de Mac donc je ne sais pas lequel fonctionnera pour vous. Vous pouvez en savoir plus dans l'aide de vim, ": help vimfiles")
Maintenant, la partie amusante. Copiez le fichier par défaut "$ VIMRUNTIME/syntax/c.vim" dans votre répertoire vimfiles ("$ HOME/.vim/syntax/c.vim" pour UNIX) et modifiez-le 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
C'est ça! Désormais, les fonctions et les noms de classe seront mis en surbrillance avec la couleur définie dans la surbrillance "Fonction" (": Hi Function"). Si vous souhaitez personnaliser les couleurs, vous pouvez remplacer les deux dernières lignes ci-dessus par 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 les couleurs dans votre fichier vimrc (": help vimrc"):
hi cCustomFunc gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00
(Notez l'absence du mot clé "def", allez dans ": help highlight-default" pour plus de détails). Pour les paramètres disponibles pour la commande ": hi", voir ": help: highlight".
Vous pouvez trouver le fichier c.vim complet pour Vim 7.2 sur ce lien (Remarque: utilisez-le uniquement si vous avez un Vim non modifié, version 7.2):
Et la capture d'écran obligatoire:
ceci est mon premier post ici et je ne savais pas comment faire une observation, la réponse d'Eduardo fait que "(" et "{" a l'air non caché et la syntaxe des bugs se replie, je l'ai un peu changé pour corriger cela.
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 une base de données ctags intégrée. Créez-en un avec l'utilitaire ctags . Ensuite, définissez la variable "tags" et mettez ce qui suit dans le
~/.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 lentement sur la très grande base de données ctags.
Il y a aussi ne solution sur le vim.org mais je n'ai pas essayé celle-ci. Dites-moi si cela marche pour vous.
EDIT: color_coded peut être trop lourd pour vous. essayez octol/vim-cpp-Enhanced-Highlight . Il prend en charge C++ 11/14 et intègre les réponses de @Eduardo.
Surligneur sémantique :
Je recommanderais jeaye/color_coded , un plugin vim pour la mise en évidence basée sur libclang
. Allez voir ses effets si vous voulez essayer. :)
Avantages:
python2.7
. Cependant, color_coded est écrit en C++ et fournit une liaison lua -> C++.Les inconvénients:
Bien qu'il soit encore en développement, il attire de plus en plus l'attention.
Sergey, changer la première ligne de
syn match cCustomParen "(" contains=cParen,cCppParen
à
syn match cCustomParen "(" contains=cParen contains=cCppParen
semble le réparer pour moi.
Essayez d'utiliser ce plugin http://www.vim.org/scripts/script.php?script_id=2646 Il fait tous les ctags en surbrillance très efficacement pour vous
Je vous recommande vraiment le plugin taghighlight
, cliquez sur ici pour son site Web.
Le plugin Clighter
peut également être considéré, qui est un
plugin for c-family semantic source code highlighting, based on Clang
Cependant, nécessite des versions et des logiciels assez récents: vim 7.4.330 +python2
et libclang
.