2009-09-18 6 views

Répondre

4

Le Les syntaxes C/C++ sont définies dans la syntaxe/c.vim et la syntaxe/cpp.vim. Si vous utilisez Linux, le répertoire de syntaxe principal se trouve dans/usr/share/vimXX /, où XX est la version (par exemple, la mienne est dans vim72). Je ne connais pas les répertoires d'installation sur d'autres systèmes d'exploitation, mais je suis sûr que vous pouvez le trouver. Je suggère de faire une copie de ceux-ci et de les placer dans votre répertoire vim utilisateur (par exemple, sous Linux, $ HOME/.vim/syntax/c.vim et ainsi de suite). Vous pouvez ensuite ajouter ce que vous voulez. La syntaxe C++ est la source de la syntaxe C, de sorte que tous les symboles que vous voulez mettre en évidence dans les deux devraient aller dans c.vim, et tout ce qui est C++ seulement devrait être dans cpp.vim.

Pour obtenir la coloration syntaxique pour les symboles spécifiques, vous devrez utiliser une instruction de correspondance de syntaxe, quelque chose comme:

syn match cUserSpecialCharacter display "[~!%^&*()-+=[\]{},.<>?:;]" 
syn match cUserSpecialCharacter display "/[^*/]"me=e-1 
syn match cUserSpecialCharacter display "/$" 

Je l'ai appelé cUserSpecialCharacter depuis cCharacter et cSpecialCharacter sont déjà utilisés. Les deuxième et troisième correspondances sont un peu un kludge pour mettre en surbrillance '/' sans les préfixes de commentaire correspondant, qui surchargeraient alors le commentaire en soulignant et casseraient tout. L'option "display" indique à Vim qu'il n'a pas besoin de chercher cette correspondance si elle ne va pas être affichée - voir :help syn-display pour une explication si vous le souhaitez!

Une fois que vous avez défini un match de syntaxe, vous pouvez l'associer à un groupe fort, par exemple:

hi def link cUserSpecialCharacter cCharacter 

Cela le mettre dans le groupe cCharacter déjà défini, il va obtenir ce que mettant en évidence qui obtient - dans ce cas, Character. Vous pouvez voir une belle liste de groupes de surbrillance au bas de c.vim pour des exemples. Si vous voulez vraiment, vous pouvez aussi hardcode un moment fort en faisant quelque chose comme: (. Par exemple arbitraire - ma mise en évidence en cours pour le groupe Error)

hi cUserSpecialCharacter term=reverse ctermfg=15 ctermbg=1 guifg=#ffffff guibg=#800000 

Voir :help hi pour plus d'informations à ce sujet, ou tout simplement :hi pour voir le liste de mise en évidence définie - beaucoup d'exemples. Je recommande de ne pas le faire, car cela ne changera pas avec les couleurs.

+0

Merci Jefromi pour votre réponse complète. J'ai fait le test et ça fonctionne bien. Il y a juste un problème mineur; Le symbole "-" refuse de mettre en évidence. – Tassos

+0

Ma meilleure estimation est que cela fait partie d'une autre définition de syntaxe, qui est prioritaire. Les définitions de la syntaxe C sont assez complexes, donc malheureusement je ne sais pas assez pour indiquer où cela pourrait être. Vous pouvez faire une recherche comme "/ syn * \ (match \ | région \) [^"] * "[^"] * - "pour rechercher des éléments contenant le '-' et voir si vous trouvez quelque chose? – Cascabel

0

Oui, vous devez modifier le thème de couleur C dans vimfiles/couleurs/c.vim Je ne connais pas toutes les options du thème, on peut utiliser, mais je suis sûr qu'ils sont documentés sur http://vim.org/

+0

Alors que je suis tout le monde pour lire la documentation, simplement pointer vers elle n'est pas vraiment une réponse ... et vous avez obtenu le mauvais chemin. C'est une coloration syntaxique, pas un schéma de couleurs, donc c'est dans la syntaxe /, pas les couleurs /. En outre, vimfiles est un répertoire add-on/override utilisé pour toutes les versions de Vim; les scripts intégrés sont tous dans le répertoire vimXX. – Cascabel

+0

Le schéma de couleurs est chargé par la syntaxe définit ce qui est quoi, le schéma de couleurs définit la couleur à utiliser, de sorte que la plupart du temps sur les couleurs correspondant à la sélection nomatter quel type de syntaxe est chargé. – ewanm89

Questions connexes