有没有办法将高度和深度指数标识的单个字符分配给高亮组?我遇到的每个匹配功能都使用正则表达式作为输入。
我问的原因是因为我正在制作一个语法着色插件,它会使文字越来越浅,灰度越来越高。如果vim没有这样的功能,而另一种算法不需要逐个字符突出显示,请指出它!
答案 0 :(得分:1)
Vim有一整套特殊的正则表达式原子,可以指定缓冲区位置。
对于行,\%23l
仅在第23行匹配。您还可以对从23开始的所有行使用\%>23l
,并将其中两个与<
和>
连接起来指定范围。
对于列,有相应的\%23c
和\%23v
。前者使用字节索引(Vim有点令人困惑地称之为“列”),由col()
和getpos()
等函数返回,后者的屏幕宽度(来自{{1}) })。
通过组合这些原子,您可以选择任意文本块,并突出显示它们,例如与virtcol()
。有关原子的详细信息,请参阅:call matchadd(...)
。
对于您的插件实现,您可以从vim js context coloring plugin获得一些想法,其中根据其范围突出显示JavaScript代码。