Dans vim, FIXME et TODO sont mis en surbrillance, mais je ne peux pas obtenir FIXME: et TODO: (notez les deux-points après le mot-clé) pour mettre en surbrillance? Que dois-je mettre dans mon .vimrc pour y arriver?
Eh bien, vous avez déjà trouvé le problème, mais voici pourquoi.
Il existe trois types de base de correspondance de syntaxe: les mots clés, les correspondances et les régions. Les mots clés sont des chaînes fixes, généralement utilisées pour les mots clés de base du langage (int
, double
, ...) et aussi, dans votre cas, pour le FIXME et TODO. Je veux vraiment dire des chaînes fixes; ils doivent être des mots exacts et entiers, contrairement aux correspondances et aux régions, qui utilisent l'expression régulière. Par exemple, à partir de la syntaxe C:
syn keyword cTodo contained TODO FIXME XXX
Il ressemble à cela dans presque toutes les définitions de syntaxe intégrées, juste avec des noms de groupe différents (cTodo).
iskeyword
indique à vim si un caractère donné peut faire partie d'un mot clé. Par défaut, il n'inclut pas les deux-points, donc lors de la recherche de mots-clés, vim voit "FIXME:" comme "FIXME" et ignore les deux-points. Si vous virez sur le colon (set iskeyword+=:
), vous pouvez maintenant définir un peu de surbrillance supplémentaire:
syn keyword myTodo contained TODO: FIXME:
C'est à vous de décider comment vous souhaitez l'intégrer dans les groupes de syntaxe/surbrillance existants. S'il s'agit d'un seul type de fichier, vous pouvez l'ajouter au groupe de tâches de cette syntaxe (par exemple, cTodo). Si vous le voulez partout, vous pouvez faire "myTodo" comme je l'ai suggéré, puis le lier directement au groupe de surbrillance Todo (hi def link myTodo Todo
).
Alternativement, vous pouvez laisser iskeyword
seul (je le recommanderais probablement) et utiliser simplement une correspondance:
syn match myTodo contained "\<\(TODO\|FIXME\):"
hi def link myTodo Todo
augroup vimrc_todo
au!
au Syntax * syn match MyTodo /\v<(FIXME|NOTE|TODO|OPTIMIZE|XXX):/
\ containedin=.*Comment,vimCommentTitle
augroup END
hi def link MyTodo Todo
containedin
l'ajoutera à tous les groupes se terminant par "Comment", plus vimCommentTitle, où " TODO: foo
ne serait pas mis en surbrillance comme MyTodo sinon.
Si vous créez votre propre environnement, make syntax file (not .vimrc)
le fichier de syntaxe globale se trouve dans le répertoire vim (ex. /usr/share/vim/vim72/syntax/c.vim)
et si vous créez ~/.vim/syntax/c.vim, vous pouvez ajouter votre propre syntaxe. (passer outre)
Ajoutez simplement une syntaxe supplémentaire dans ce fichier. (comme le fait @Jefromi)