Como posso fazer com que os comandos de destaque no .vimrc entrem em vigor imediatamente com o Vim 7.4?

9

Eu tenho vários highlightcomandos no meu .vimrcarquivo. No Vim 7.3, eles entraram em vigor imediatamente após o início do Vim. Após a atualização para o Vim 7.4, esse não é mais o caso. O Vim usa seu destaque padrão inicialmente. Quando carrego .vimrcuma segunda vez executando source ~/.vimrc, realçar funciona como eu quero.

Você poderá reproduzir esse problema usando as seguintes etapas:

  1. Faça uma cópia do seu .vimrcarquivo.

  2. Substitua ~/.vimrcpor um arquivo que contenha apenas a linha highlight Type ctermfg=28 cterm=bold.

  3. Execute vim dummy.cem um terminal de 256 cores (por exemplo, Terminal GNOME).

  4. Digite intno buffer. O intdeve aparecer em fonte regular e ser verde claro, o que não é o que eu quero.

  5. Enter :source ~/.vimrc. Agora o intdeve aparecer em negrito e ser colorido em verde escuro.

De acordo com o artigo Como controlar / configurar as cores do vim , não há problema em colocar apenas os highlightcomandos .vimrc. O artigo diz que você deve colocar syntax enableos highlightcomandos, mas isso não fez nenhuma diferença.

Minha primeira correção foi para preceder cada highlightcomando .vimrccom autocmd VimEnter *. Isso funcionou para alguns tipos de arquivos, mas não para outros (arquivos C são um exemplo).

Qual o motivo desse comportamento? Como posso highlightexecutar os comandos quando o Vim é iniciado, de modo que eles tenham efeito para todos os buffers durante toda a sessão do Vim?

Wolfgang Jeltsch
fonte
soa como edição 542
Christian Brabandt 25/10
Sim, ao adicionar set compatibleno início de .vimrc, o destaque da sintaxe funciona conforme o esperado. Então, isso realmente parece ser esse bug em ação.
Wolfgang Jeltsch 25/10
Precedi os highlightcomandos com autocmd ColorScheme *, que foram propostos como uma solução alternativa no relatório de erros. Ele ainda não funciona. Wolf
Wolfgang Jeltsch 25/10
Agora estou escrevendo meu próprio esquema de cores, que aparentemente também funciona em torno desse bug.
Wolfgang Jeltsch 25/10
Cristão, você pode simplesmente escrever seu comentário como resposta? Afinal, esta é a resposta certa para o meu problema. Ou existe outra abordagem para lidar com perguntas que realmente revelam bugs?
Wolfgang Jeltsch 25/10

Respostas:

5

Essa não é uma resposta definitiva e seu problema parece com o problema 542 . Aparentemente, você pode contornar isso, escrevendo seu próprio esquema básico de cores, em vez de escrever essas hi ...instruções diretamente no seu .vimrc.

Christian Brabandt
fonte
Eu acho que é por causa dessa questão do Vim; portanto, sua resposta realmente parece ser a resposta correta para o meu problema.
Wolfgang Jeltsch 25/10
3

Na verdade, você não deve colocar seus destaques personalizados no vimrc, mas nos arquivos de sintaxe alfandegária.

Esses arquivos devem estar localizados em ~/.vim/after/syntax/filetype.vimonde filetypeestá o tipo de arquivo esperado. Se você está mais satisfeito com um arquivo de sintaxe, mas gostaria de adicionar alguns comandos, siga estas etapas (extraídas de :h mysyntaxfile-add):

  1. Crie um diretório chamado "after / syntax". Para Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Escreva um script do Vim que contenha os comandos que você deseja usar. Por exemplo, para alterar as cores da sintaxe C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Escreva esse arquivo no diretório "after / syntax". Use o nome da sintaxe, com ".vim" adicionado. Para nossa sintaxe C:

    :w ~/.vim/after/syntax/c.vim
    

É isso aí. Na próxima vez que você editar um arquivo C, a cor do comentário será diferente. Você nem precisa reiniciar o Vim.

:h mysyntaxfileé um bom lugar para obter informações sobre como corrigir seus próprios arquivos de sintaxe. Aprenda também o Vimscript The Hard Way como vários capítulos sobre este tópico.

statox
fonte
2
E se eu quiser alterar o realce para todos os tipos de arquivo. Por exemplo, quero que a cor dos comentários seja azul escuro, independentemente do tipo de arquivo.
Wolfgang Jeltsch 25/10
Tentei mais ou menos a abordagem que você sugeriu. Adicionei um arquivo .vimrc/highlighting.vim, criei um diretório .vimrc/syntax/aftere adicionei vários links simbólicos do formulário * tipo de arquivo * .vimque apontam .vimrc/highlighting.vimpara esse diretório. O destaque da sintaxe ainda não funciona.
Wolfgang Jeltsch 25/10
@WolfgangJeltsch Yup como o meu post e o doc diz o diretório deve ser ~/.vim/after/syntaxnão~/.vimrc
statox
Está correto. No entanto, este foi apenas um erro de digitação no meu comentário. Na verdade, eu trabalhei no diretório .vime destaque de sintaxe não funcionou, provavelmente por causa deste erro 542.
Wolfgang Jeltsch
Não! não está funcionando.
Yar
1

Pelo que vale, eu tive esse problema com o MacVim (8.1.950 (155)). Colocar a declaração de destaque depois colorschemeem .vimrc a corrigiu para mim. Por exemplo:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Halil Özgür
fonte