Domanda

Ho da poco installato il mio ambiente Vim da TextMate, dopo aver diventare dipendente al suo ingresso modale.

Tuttavia, l'evidenziazione della sintassi sembra non essere così bella in Vim. codice che in C ++ e dal momento che la chiamata di funzione e nomi di classe non può essere messo in evidenza, il codice è più difficile da leggere. Ho giocato con schema di colori per un po ', ma non ho trovato alcun campo che corrisponde a "nome di classe" o "nome di funzione".

Nella foto qui sotto, notare come DroughtLayer:: e *.size() non è evidenziato a destra nella MacVim.

confronto tra immagine TextMate (a sinistra) e Vim (a destra)
(fonte: ivzhao.com )

Tutte le idee su come risolvere questo problema? E 'veramente mi infastidisce come io sono tanto un ragazzo visivo-sensibili.

È stato utile?

Soluzione

È interessante notare che gli evidenziatori di sintassi in vim non supportano l'applicazione di una sintassi per identificatori o nomi di funzione - almeno non gli evidenziatori sintassi per C e C ++. Quindi, anche se si fa:

:hi Function guifg=red

o

:hi Identifier guifg=red

non dare a questi un colore. Mi sembra proprio di essere non molto di più di parole chiave e costanti per queste lingue.

Qui, qualcuno ha iniziato a estendere il file di sintassi cpp per supportare i nomi di metodo. E 'un inizio immagino. http://vim.wikia.com/wiki/Highlighting_of_method_names_in_the_definition

Altri suggerimenti

Ho avuto questo stesso problema quando ho iniziato ad usare vim. La soluzione è semplice, basta modificare il file di sintassi c usato da vim, ecco come fare:

Quando si avvia la modifica di un file di C o C ++, vim legge il file di sintassi predefinita c situato in

$VIMRUNTIME/syntax/c.vim

(Dove $ VIMRUNTIME è dove si hanno vim installato Si può scoprire il suo valore di default con l'apertura di vim e utilizzando il comando. ": Echo $ VIMRUNTIME").

Si può semplicemente sovrascrivere il file, oppure è possibile creare il file di sintassi C personalizzato (che verrà caricato da vim al posto di quella di default) in questa posizione:

$HOME/.vim/syntax/c.vim      (for UNIX)
$HOME/vimfiles/syntax/c.vim  (for PC or OS/2)

(non ho mai usato un Mac in modo da non lo so quale lavorerà per voi Potete saperne di più nella guida vim,. ": Aiutare vimfiles")

Ora la parte divertente. Copiare il file "$ VIMRUNTIME / sintassi / c.vim" default nella directory vimfiles ( "$ HOME / .vim / sintassi / c.vim" per UNIX), e modificarlo aggiungendo queste righe:

" 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

Questo è tutto! Ora funzioni e nomi di classe saranno evidenziati con il colore definito nel momento clou "Funzione" ( ": hi Function"). Se si desidera personalizzare i colori, è possibile modificare le ultime due righe di cui sopra a qualcosa di simile:

hi def cCustomFunc  gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00

o è possibile lasciare il file di sintassi C solo e definire i colori nel file vimrc ( ": help vimrc"):

hi cCustomFunc  gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00

(Si noti l'assenza della parola chiave "def", andare a ": help highlight-default" per i dettagli). Per i parametri a disposizione del ": hi" Comando vedere ": help: evidenziare".

È possibile trovare il file c.vim completo per Vim 7.2 su questo link (Nota: utilizzare solo questo se si dispone di un non-modificato Vim, versione 7.2):

  

http://pastebin.com/f33aeab77

E screenshot obbligatorio:

  

entrare descrizione dell'immagine qui

questo è il mio primo post qui e non sapevo come fare un'osservazione, la risposta di Eduardo fa "(" e "{" guarda unmached e gli insetti foldind sintassi, ho cambiato un po 'per risolvere questo problema.

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

EDIT: color_coded possono essere troppo pesante per te. prova a octolo / vim-cpp-enhanced-clou . Supporta C ++ 11/14 e si integra quali risposte @Eduardo.

Semantic evidenziatore base:
Suggerirei jeaye / color_coded , Un plugin vim per libclang a base evidenziando
Quindi dispiace che io sono nuovo a StackOverflow il che significa che ho non abbastanza reputazione di inviare le immagini. Andate a vedere i suoi effetti se si vuole dare un colpo. :)

Pro:

  • Facilità di installazione
  • evidenziazione Semantic
  • Clighter menzionato come sopra, hanno bisogno di vim compilato con python2.7. Tuttavia, color_coded è scritto in C ++ e fornisce vincolante lua -> C ++.

Contro:

  • Ritarda a meno che non si fanno alcuni eventi Vim acitve esso.
  • La personalizzazione è po 'più difficile; è necessario modificare la sintassi / color_coded.vim te stesso. Ma la personalizzazione è stata posta sulla sua tabella di marcia.

Anche se è ancora in fase di sviluppo, è sempre più guadagnando attenzione.

prima   dopo

Sergey, cambiando la prima linea da

syn match    cCustomParen    "(" contains=cParen,cCppParen

a

syn match    cCustomParen    "(" contains=cParen contains=cCppParen

sembra risolvere il problema per me.

Usa un plug-in per vim come Taglist o impostare ctags o l'integrazione cscope con vim ( ecco un tutorial per la vim / cscope.)

Prova ad usare questo plugin http://www.vim.org/scripts /script.php?script_id=2646 La sua fa tutto ctags che evidenziano in modo molto efficiente per voi

ho davvero vi consiglio il plugin taghighlight, fare clic su qui per il suo sito web.

Il Clighter plugin può anche essere considerato, che è un

plugin for c-family semantic source code highlighting, based on Clang

Tuttavia, richiede versioni abbastanza recenti e software:. vim 7.4.330 +python2 e libclang

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top