Vim:在插入模式下突出显示未在行尾定义的组

时间:2014-08-25 15:15:03

标签: syntax-highlighting vim

我想定义一些只有在注释和字符串之外输入时才会扩展的映射。检测光标是否位于注释/字符串内的推荐方法是(例如,参见:help synID()):

if synIDattr(synID(line("."), col("."), 1), "name") == "xxxComment"

但是,这在插入模式下效果不佳。如果光标位于该行的最后一个字符后面,就像在此示例中一样(|代表光标):

some useful text    # Comment text|

函数synID()始终返回零。这是1)Vim bug,2)语法文件错误,还是3)只是一种语法高亮的方式?

是的,我总是可以检查前一个字符的同义ID,如synID(y, x-1, 1)中所示,但这会使脚本逻辑的其余部分变得更复杂。

1 个答案:

答案 0 :(得分:1)

我投票支持3),它是语法高亮显示如何工作的工件:它只考虑属于缓冲区的字符,当前光标位置(在一行的末尾)是尚未成为缓冲区的一部分。

我以与你在我的某个插件中建议的方式相同的方式解决了这个问题,请参阅here