假设我有这些 Vim 定义:
syn match tasktag "\(\s\)\@<=@[a-zA-Z0-9_]\+"
syn match taskdone "\<[Dd]one\>" containedin=tasktag
我如何指定taskdone
突出显示行中的整个文本?我看了:h syn-pattern-offset
也:h syn-region
。
答案1
首先,您的“tasktag”匹配不允许空格或其他“单词分隔符”,而您的“taskdone”匹配要求“done”是一个离散的单词,因为您的 \< 和 \> 单词边界原子。
其次,您的“taskdone”匹配仅突出显示“Done”一词。
假设我正确理解了你想要什么,我修改了你的两场比赛:
syn match tasktag "\(\s\)\@<=@[a-zA-Z0-9_ ]\+"
syn match taskdone "@.*\<[Dd]one\>.*" containedin=tasktag
如果你还没有这样做,你需要指定两个匹配项的突出显示。例如:
highlight link tasktag TODO
highlight link taskdone Statement