J'ai installé gvim sur Fedora et Win7. J'ai trouvé que vim et gvim sur Fedora ne mettaient pas en évidence le nom de la fonction dans le code c tandis que gvim sur win7 le mettait en surbrillance.
J'ai trouvé que sur win7, vim73/syntax/c.vim
a les lignes supplémentaires à la fin:
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
Si j'ajoute ces lignes dans c.vim
Fedora, gvim peut également mettre en évidence le nom de la fonction.
Pour maintenir la portabilité, je souhaite simplement modifier le .vimrc
pour mettre en surbrillance le nom de la fonction. Cependant, après avoir ajouté ces lignes dans le .vimrc
, cela n'a pas fonctionné.
Alors, quelqu'un peut-il m'aider? J'ai fait une recherche et il existe de nombreuses solutions pour mettre en évidence les noms de fonction dans vim. Mais je suis simplement curieux de savoir comment faire fonctionner ces lignes .vimrc
. Merci beaucoup!
la source
~/.vim/after/syntax/c.vim
place..vimrc
?autocmd BufEnter *.c hl ...
, mais vous devriez le garderafter/syntax/c.vim
. Toute version moderne de Vim comprendra le.vim/after/
répertoire. Sous Windows, le chemin seraitvimfiles/after/...
, donc la portabilité ne devrait pas être un gros problème (surtout si vous utilisez des plugins).Réponses:
La raison en est que Vim efface les éléments de syntaxe existants lors de la définition de l'
'syntax'
option. Cela est dû au fait que conserver les anciens éléments de syntaxe entraînerait des situations étranges; si vous avez un tampon qui asyntax=foo
et utilisezset syntax=bar
alors vous vous retrouverez avec un tampon qui a une coloration syntaxique pour les deuxfoo
etbar
.Lorsque Vim démarre, il charge votre
vimrc
fois (au démarrage), mais il charge les fichiers de type de fichier et de syntaxe à chaque fois que les optionsfiletype
ousyntax
sont définies, ce qui réinitialisera les valeurs que vous avez définies dans votre vimrc.Même s'il ne le réinitialisait pas, ce ne serait pas une bonne idée de simplement l'ajouter à votre vimrc, car il s'appliquerait à tous les tampons, et pas seulement aux tampons avec
syntax=c
.Le texte ci-dessous suppose Vim sur un système Unix-y, mais cela fonctionnera également pour les utilisateurs Neovim et Windows:
~/.vim/
par~/.config/nvim/
.~/.vim/
par%USERPROFILE%\vimfiles\
.Remplacement d'un fichier entier
Le moyen le plus simple de changer quelque chose est de simplement le remplacer . Pour ce faire, créez un fichier dans
~/.vim/<file>.vim
.<file.vim>
est le chemin relatif à$VIMRUNTIME
(y compris les sous-répertoires). Dans votre exemple, ça devrait l'êtresyntax/c.vim
. Il sera chargé à la place du fichier dans$VIMRUNTIME
.Le résultat est qu'il est plus facile d'apporter des modifications - la modification des fichiers de syntaxe existants peut parfois être un peu délicate. L'inconvénient est que vous n'obtiendrez aucune future mise à jour du fichier à l'échelle du système.
Je l'utilise souvent comme point de départ pour expérimenter avec des fichiers de syntaxe, puis extraire plus tard mes modifications locales vers un ajout local en utilisant l'une des méthodes décrites ci-dessous.
Ajouts locaux
Il existe deux façons d'ajouter des ajouts locaux aux fichiers de syntaxe, ils sont fonctionnellement identiques et vous pouvez utiliser la méthode que vous préférez.
Syntax
autocmdUtilisez l'
Syntax
autocmd:Notez que l'enchaînement de plusieurs commandes avec
|
est problématique ici, car elles ont tendance à être interprétées comme faisant partie de la:syn
commande, c'est pourquoi j'ai répétéautocmd Syntax c
plusieurs fois. Une alternative serait d'utiliser une fonction:L'avantage est que toutes les modifications peuvent être contenues dans un seul fichier. L'inconvénient est que c'est un peu moche, surtout si vous avez beaucoup de changements.
après répertoire
Utilisez le répertoire après:
~/.vim/after/<file>.vim
.Celui-ci sera chargé après
<file>.vim
has, où<file.vim>
est le chemin par rapport à$VIMRUNTIME
(y compris les sous-répertoires). Dans votre exemple, ça devrait l'êtresyntax/c.vim
.Voir aussi
:help after-directory
.L'avantage est qu'il est un peu plus lisible que l'autocmd, surtout si vous avez beaucoup de changements. L'inconvénient est que vous devrez copier sur un fichier supplémentaire si vous souhaitez mettre en miroir votre configuration Vim sur différentes machines (c'est une raison importante pour laquelle de nombreuses personnes conservent leurs fichiers Vim dans un référentiel GitHub, afin qu'elles puissent être facilement reproduites sur plusieurs machines). ).
la source