Comment puis-je faire en sorte que les commandes de surbrillance dans .vimrc prennent effet immédiatement avec Vim 7.4?

9

J'ai plusieurs highlightcommandes dans mon .vimrcdossier. Dans Vim 7.3, celles-ci sont entrées en vigueur immédiatement après le démarrage de Vim. Après la mise à jour vers Vim 7.4, ce n'est plus le cas. Vim utilise sa surbrillance par défaut initialement. Lorsque je charge .vimrcune deuxième fois en exécutant source ~/.vimrc, la mise en surbrillance fonctionne comme je le souhaite.

Vous devriez pouvoir reproduire ce problème en procédant comme suit:

  1. Faites une copie de votre .vimrcdossier.

  2. Remplacez-le ~/.vimrcpar un fichier contenant uniquement la ligne highlight Type ctermfg=28 cterm=bold.

  3. Exécuter vim dummy.cdans un terminal 256 couleurs (par exemple GNOME Terminal).

  4. Tapez intdans le tampon. Le intdevrait apparaître en police régulière et être de couleur vert clair, ce qui n'est pas ce que je veux.

  5. Entrez :source ~/.vimrc. Le intdoit maintenant apparaître en gras et être de couleur vert foncé.

Selon l'article Comment contrôler / configurer les couleurs de vim , il devrait être correct de simplement mettre les highlightcommandes dans .vimrc. L'article dit que vous devez mettre syntax enableaprès les highlightcommandes, mais cela n'a fait aucune différence.

Ma première solution était de préfixer chaque highlightcommande en .vimrcavec autocmd VimEnter *. Cela a fonctionné pour certains types de fichiers, mais pas pour d'autres (les fichiers C en sont un exemple).

Quelle est la raison de ce comportement? Comment puis-je exécuter les highlightcommandes au démarrage de Vim pour qu'elles prennent effet pour tous les tampons pendant toute la session Vim?

Wolfgang Jeltsch
la source
sonne comme le numéro 542
Christian Brabandt
Oui, lors de l'ajout set compatibleau début de .vimrc, la mise en évidence de la syntaxe fonctionne comme prévu. Donc, cela semble vraiment être ce bug en action.
Wolfgang Jeltsch
J'ai précédé les highlightcommandes avec autocmd ColorScheme *, qui a été proposé comme solution de contournement dans le rapport de bogue. Cela ne fonctionne toujours pas. ☹
Wolfgang Jeltsch
J'écris maintenant mon propre schéma de couleurs, qui fonctionne apparemment également autour de ce bogue.
Wolfgang Jeltsch
Christian, pouvez-vous simplement écrire votre commentaire comme réponse? Après tout, c'est la bonne réponse à mon problème. Ou existe-t-il une autre approche pour traiter les questions qui révèlent réellement des bogues?
Wolfgang Jeltsch

Réponses:

5

Ce n'est pas une réponse définitive et votre problème ressemble au problème 542 . Apparemment, vous pouvez contourner cela, en écrivant votre propre schéma de couleurs de base, au lieu d'écrire ces hi ...instructions directement dans votre .vimrc.

Christian Brabandt
la source
Je pense que c'est à cause de ce problème avec Vim; donc votre réponse semble vraiment être la bonne réponse à mon problème.
Wolfgang Jeltsch
3

En fait, vous ne devriez pas mettre vos surbrillances personnalisées dans votre vimrc mais dans des fichiers de syntaxe douanière.

Ces fichiers doivent être situés dans ~/.vim/after/syntax/filetype.vimfiletypeest le type de fichier attendu. Si vous êtes principalement satisfait d'un fichier de syntaxe mais souhaitez ajouter quelques commandes, vous pouvez suivre ces étapes (tirées de :h mysyntaxfile-add):

  1. Créez un répertoire appelé "after / syntax". Pour Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Écrivez un script Vim contenant les commandes que vous souhaitez utiliser. Par exemple, pour changer les couleurs de la syntaxe C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Écrivez ce fichier dans le répertoire "after / syntax". Utilisez le nom de la syntaxe, avec ".vim" ajouté. Pour notre syntaxe C:

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

C'est ça. La prochaine fois que vous éditez un fichier C, la couleur du commentaire sera différente. Vous n'avez même pas besoin de redémarrer Vim.

:h mysyntaxfileest un bon endroit pour obtenir des informations sur la façon de corriger vos propres fichiers de syntaxe. Découvrez également Vimscript The Hard Way en plusieurs chapitres sur ce sujet.

statox
la source
2
Que faire si je souhaite modifier la mise en évidence pour tous les types de fichiers. Par exemple, je veux que la couleur des commentaires soit bleu foncé, quel que soit le type de fichier.
Wolfgang Jeltsch,
J'ai essayé plus ou moins l'approche que vous proposiez. J'ai ajouté un fichier .vimrc/highlighting.vim, créé un répertoire .vimrc/syntax/afteret ajouté plusieurs liens symboliques de la forme * filetype * .vimqui pointent .vimrc/highlighting.vimvers ce répertoire. La mise en évidence de la syntaxe ne fonctionne toujours pas.
Wolfgang Jeltsch
@WolfgangJeltsch Yup comme mon post et le doc dit que le répertoire ne devrait ~/.vim/after/syntaxpas être~/.vimrc
statox
C'est correct. Cependant, ce n'était qu'une faute de frappe dans mon commentaire. En fait, j'ai travaillé dans le répertoire .vimet la coloration syntaxique n'a pas fonctionné, probablement à cause de ce bug 542.
Wolfgang Jeltsch
Nan! Ca ne fonctionne pas.
Yar
1

Pour ce que ça vaut, j'ai eu ce problème avec MacVim (8.1.950 (155)). Placer la déclaration de surbrillance après colorschemedans .vimrc l'a corrigé pour moi. Par exemple:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Halil Özgür
la source