在vim中,我如何突出显示TODO:和FIXME:?

在vim,FIXME和Todo突出显示,但我不能得到FIXME:和Todo:(注意关键字后的冒号)突出显示?我应该在我的.vimrc中使这个发生吗?
好了,你已经发现了问题,但这里是为什么。

语法匹配有三种基本类型:关键字,匹配和区域。关键字是固定字符串,通常用于基本语言关键字(int,double,…),以及在您的情况下,用于FIXME和Todo。我真的的确是固定字符串;他们必须是精确和整个词,不像匹配和区域,使用正则表达式。例如,从C语法:

syn keyword   cTodo   contained    Todo FIXME XXX

它看起来像在几乎所有内置语法定义,只是与不同的组名称(cTodo)。

iskeyword告诉vim一个给定的字符是否可以是关键字的一部分。认情况下,它不包括冒号,因此在查找关键字时,vim将“FIXME:”视为“FIXME”,并忽略冒号。如果你点击冒号(设置iskeyword = :),你现在可以定义一个额外的位高亮:

syn keyword   myTodo   contained   Todo: FIXME:

它取决于你如何将它工作到现有的语法/高亮组。如果它只是一个文件类型,您可以将其添加到该语法的todo组(例如cTodo)。如果你想要它无处不在,你可以做“myTodo”,我建议,然后直接链接到Todo突出组(hi def link myTodo Todo)。

或者,你可以单独留下iskeyword(我可能会推荐这个),只是使用一个匹配:

syn match   myTodo   contained   "\<\(Todo\|FIXME\):"
hi def link myTodo Todo

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...