具有细粒度的语法突出显示

时间:2014-01-02 23:46:09

标签: vim

有没有办法将高度和深度指数标识的单个字符分配给高亮组?我遇到的每个匹配功能都使用正则表达式作为输入。

我问的原因是因为我正在制作一个语法着色插件,它会使文字越来越浅,灰度越来越高。如果vim没有这样的功能,而另一种算法不需要逐个字符突出显示,请指出它!

1 个答案:

答案 0 :(得分:1)

Vim有一整套特殊的正则表达式原子,可以指定缓冲区位置。

对于行,\%23l仅在第23行匹配。您还可以对从23开始的所有行使用\%>23l,并将其中两个与<>连接起来指定范围。

对于列,有相应的\%23c\%23v。前者使用字节索引(Vim有点令人困惑地称之为“列”),由col()getpos()等函数返回,后者的屏幕宽度(来自{{1}) })。

通过组合这些原子,您可以选择任意文本块,并突出显示它们,例如与virtcol()。有关原子的详细信息,请参阅:call matchadd(...)


对于您的插件实现,您可以从vim js context coloring plugin获得一些想法,其中根据其范围突出显示JavaScript代码。