我正在尝试为包含三种不同类型的列表元素(分别以 - ,o和x开头)的小文本格式编写语法高亮模块,并且我想根据它们的类型突出显示条目。对于单行来说很简单,我只使用syn match myGroup /^\s\+- .\+/
而且我已经完成了。
问题是,我一直在尝试这样做,以便没有列表标记的下一行保持与起始列表项行相同的颜色,但没有成功。我一直试图用语法区域来做,但我似乎无法理解它们是如何工作的。
如果文件格式需要进行任何更改以便更容易/可能,我可以自由更改它。
我怎么能得到它的任何线索?
答案 0 :(得分:7)
您可以尝试这些方面的内容
syntax region Minus_Region start=/^\s\+-/ end=/;/
hi Minus_Region guifg='Yellow'
syntax region O_Region start=/^\s\+o/ end=/;/
hi O_Region guifg='Green'
syntax region X_Region start=/^\s\+x/ end=/;/
hi X_Region guifg='Gray'
无论涉及多少行,您都可以按开头和结尾(在本例中为;
)定义区域。
有关详细信息,请参阅帮助
如果你想完成没有结束标记字符的区域(在这种情况下是;
),你可以使用匹配结束(me
)选项来完成区域,并且区域在下一个区域开始标记上结束。例如:
syntax region Minus_Region start=/^\s\+- / end=/^\s\+[-ox] /me=s-1
syntax region O_Region start=/^\s\+o / end=/^\s\+[-ox] /me=s-1
syntax region X_Region start=/^\s\+x / end=/^\s\+[-ox] /me=s-1
me=s-1
部分表示“真正的匹配在模式匹配的起始位置左侧的一个字符处结束”。