Vim语法高亮显示

时间:2018-08-21 04:24:26

标签: vim syntax

我有一种文本文件,其中有一堆关键字都以井号(#)开头。示例:

#foobar
    #fizz bizz

我想调整vim语法文件以仅突出显示关键字后的单词;在此示例中为bizz。

2 个答案:

答案 0 :(得分:1)

即使您不想突出显示关键字本身(您的意见以后可能会改变),也可以将两个语法分别解析为单独的语法组,因为Vim的语法突出显示是针对文档的完整解析而设计的。

因此,为关键字和单词定义语法组,并指定它们之间的关系:

syntax match myKeywords "#\w\+\>" skipwhite nextgroup=myKeywords,myWords
syntax match myWords "\<\w\+\>" contained skipwhite nextgroup=myKeywords,myWords

(这些模式将您的稀缺描述作为输入;根据需要进行调整。)要突出显示这些单词,您可以将myWords链接到现有的 highlight组(推荐),或者定义自己的属性:

highlight link myWords Statement

myKeywords已解析,但未突出显示,因为没有:highlight命令。

完整语法脚本的路径

如果您需要“调整”(第三方)语法脚本,则最好将这些扩展名单独保存在之后目录中(例如~/.vim/after/syntax/<filetype>.vim)。另外,根据现有的语法组,如果现有的语法组已经匹配(可以用containedin=...进行修复),则可能会带来其他麻烦。

如果这是新语法,则最好编写相应的文件类型检测;在语法脚本中,将my前缀替换为所选的文件类型名称。您可以在:help 44.11上找到有关语法脚本的更多信息。

答案 1 :(得分:0)

要突出显示#fizz之后的文本:

syntax match HashWord /\v(#fizz>)@<=.*/hs=s+1
highlight HashWord ctermbg=60

这将创建与模式HashWord相匹配的语法组\v(#fizz>)@<=.*。在图案的 s 标记(hs)之后的一个字符中, h 点亮 s tar(s+1)。

可以使用ctermbgctermfg更改背景和前景突出显示颜色。对于GUI vim,请改用guibgguifg

相关问题