Pergunta

Eu só recentemente configurar meu ambiente Vim de Textmate, depois de se tornar viciado em sua entrada modal.

No entanto, o destaque da sintaxe parece não ser tão bonito no vim. código que em C ++ e uma vez que a chamada de função e nomes de classe não pode ser destacado, o código é mais difícil de ler. Eu joguei com esquema de cores para um pouco, mas não conseguiu encontrar qualquer campo que correspondeu "nome da classe" ou "nome de função".

Na figura abaixo, observe como DroughtLayer:: e *.size() não é realçado à direita na MacVim.

comparação de imagem entre Textmate (esquerda) e Vim (direita)
(fonte: ivzhao.com )

Alguma idéia de como resolver isso? Isso realmente me irrita como eu sou tanto um cara sensível ao visual.

Foi útil?

Solução

Curiosamente, os marcadores de sintaxe em VIM não suportam a aplicação de uma sintaxe para identificadores ou nomes de função - pelo menos não os marcadores de sintaxe para C e C ++. Assim, mesmo se você fizer isso:

:hi Function guifg=red

ou

:hi Identifier guifg=red

não dar a estes uma cor. Eu só não parece ser muito mais do que palavras-chave e constantes para esses idiomas.

Aqui, alguém começou estender o arquivo de sintaxe CPP para suportar nomes de métodos. É um começo, eu acho. http://vim.wikia.com/wiki/Highlighting_of_method_names_in_the_definition

Outras dicas

Eu tive esse mesmo problema quando eu comecei a usar vim. A solução é simples, você só tem que editar o arquivo c sintaxe usado por vim, aqui está como fazê-lo:

Quando você começar a editar um arquivo C ou C ++, vim lê o arquivo padrão c sintaxe localizado no

$VIMRUNTIME/syntax/c.vim

(Onde $ VIMRUNTIME é onde você vim instalado Você pode descobrir que o valor padrão por vim abrir e usar o comando. ": Echo $ VIMRUNTIME").

Você pode simplesmente substituir esse arquivo, ou você pode criar o seu costume arquivo de sintaxe C (que será carregado pelo vim em vez do padrão) neste local:

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

(Eu nunca usou um Mac então eu não sei qual deles irá funcionar para você Você pode saber mais na ajuda vim,. ": Vimfiles ajuda")

Agora, a parte divertida. Copie o padrão "$ VIMRUNTIME / sintaxe / c.vim" arquivo para seu diretório vimfiles ( "$ HOME / .vim / sintaxe / c.vim" para UNIX), e editá-lo adicionando estas linhas:

" 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

É isso aí! Agora funções e nomes de classe será destacado com a cor definida no destaque "Function" ( ": Função oi"). Se você quiser personalizar as cores, você pode alterar as duas últimas linhas acima para algo como isto:

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

ou você pode deixar o arquivo de sintaxe C sozinho e definir cores em seu arquivo vimrc ( ": ajuda vimrc"):

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

(Note a ausência do "def" palavra-chave, vá para ": ajudar a destacar-default" para mais detalhes). Para os parâmetros disponíveis para o comando: ver "oi" ": ajuda: destaque".

Você pode encontrar o arquivo c.vim completa para Vim 7.2 neste link (Nota: use somente este se você tem um Vim não modificado, versão 7.2):

http://pastebin.com/f33aeab77

E a imagem obrigatória:

enter descrição da imagem aqui

este é meu primeiro post aqui e eu não sabia como fazer uma observação, a resposta de Eduardo faz "(" e "{" olhar unmached e os erros de sintaxe foldind, eu mudei um pouco para corrigir isso.

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 pode ser demasiado pesado para você. tente octol / vim-CPP reforçada-destaque . Ele suporta C ++ 14/11 e integra Que respostas @Eduardo.

Semântica marcador com base:
Eu recomendaria jeaye / color_coded , A vim plugin para-baseada libclang destacando
Tão triste que eu sou novo para stackoverflow que significa que eu não tenho reputação suficiente para postar imagens. Vai ver seus efeitos, se você quiser dar-lhe um tiro. :)

Pros:

  • Fácil instalação
  • realce semântico
  • Clighter mencionado acima, necessidade vim compilado com python2.7. No entanto, color_coded é escrito em C ++ e fornece ligação lua -> C ++.

Contras:

  • Ele atrasa a menos que você faça alguns eventos vim para Acitve-lo.
  • A personalização é pouco mais difícil; Você precisa editar sintaxe / color_coded.vim você mesmo. Mas personalização tem sido colocada em seu roteiro.

Embora ele ainda está em desenvolvimento, está ganhando cada vez mais atenção.

antes depois

Sergey, mudando a primeira linha de

syn match    cCustomParen    "(" contains=cParen,cCppParen

para

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

parece corrigi-lo para mim.

Use um plug-in para o vim como taglist ou configurar ctags ou integração cscope com o vim ( aqui está um tutorial para o vim / cscope.)

Tente usar este plugin http://www.vim.org/scripts /script.php?script_id=2646 Sua faz todas ctags destacando de forma muito eficiente para você

Eu realmente recomendo que você o plugin taghighlight, clique aqui para ele do site.

O Clighter plugin pode também ser considerado, que é um

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

No entanto, requer versões bastante recentes e software:. vim 7.4.330 +python2 e libclang

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top