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.

Était-ce utile?

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):

  

http://pastebin.com/f33aeab77

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.

avant   après

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.

A l'aide d'un plug-in pour vim comme taglist ou mettre en place ctags ou l'intégration de cscope avec vim ( est un tutoriel pour le vim / cscope.)

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

Je vous recommande vraiment le plugin taghighlight, cliquez sur pour son site web.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top