我有一种类型的文本文件,它有许多关键字,它们都以散列(#)开头。示例:
#foobar
#fizz bizz我想调整一个vim语法文件,使其只突出显示关键字后面的单词;在本例中,它将是bizz。
发布于 2018-08-21 06:49:27
即使您不想突出显示关键字本身(稍后您的意见可能会改变),也更容易将这两个语法组解析为单独的语法组,因为Vim的语法突出显示是为文档的完整解析量身定制的。
因此,为关键字和单词定义语法组,并指定它们之间的关系:
syntax match myKeywords "#\w\+\>" skipwhite nextgroup=myKeywords,myWords
syntax match myWords "\<\w\+\>" contained skipwhite nextgroup=myKeywords,myWords(模式以你稀缺的描述为输入,根据你的需要进行调整。)要突出显示单词,可以将myWords链接到现有的突出显示组(推荐),或者定义自己的属性:
highlight link myWords StatementmyKeywords被解析,但没有高亮显示,因为它没有:highlight命令。
完整语法脚本的路径。
如果有需要“调整”的(第三方)语法脚本,最好将这些扩展单独保存在“后”目录(例如~/.vim/after/syntax/<filetype>.vim)中。此外,根据现有语法组的不同,如果现有语法组已经匹配(可以用containedin=...修复),则可能会出现额外的复杂情况。
如果这是一个新语法,最好编写相应的文件类型检测;在语法脚本中,将my前缀替换为所选的文件类型名称。您将在:help 44.11上找到有关语法脚本的更多信息。
发布于 2018-08-21 04:58:30
在#fizz之后突出显示文本
syntax match HashWord /\v(#fizz>)@<=.*/hs=s+1
highlight HashWord ctermbg=60这将创建一个与模式HashWord匹配的语法组\v(#fizz>)@<=.*。h‘starts (hs)在图案的’start (s+1)之后的一个字符。
背景和前景高亮颜色可以改变与ctermbg和ctermfg。对于GUI,使用guibg和guifg代替。
https://stackoverflow.com/questions/51941545
复制相似问题