作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为包含三种不同类型的列表元素(分别以 -、o 和 x 开头)的微小文本格式编写语法突出显示模块,并且我想根据它们的种类突出显示条目。对于单行很容易,我只使用 syn match myGroup /^\s\+- .\+/
我已经完成了。
问题是,我一直在尝试这样做,以便没有列表标记的下一行保持与起始列表项行相同的颜色,但没有成功。我一直在尝试使用语法区域来做到这一点,但我似乎无法理解它们是如何工作的。
更准确地说,这是我想要达到的输出:
如果需要对文件格式进行任何更改以使其更容易/可能,我可以自由更改它。
我怎么能得到它的任何线索?
最佳答案
你可以尝试这些方面的东西
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'
;
)。
;
),您可以在区域的 end 参数上使用 match-end (
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
part 表示“真正的匹配结束于模式匹配开始位置左侧的一个字符”。
关于vim - 如何有一个 Vim 多行语法高亮子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651643/
我是一名优秀的程序员,十分优秀!