在Vimscript中,是否可以访问语法高亮显示器已知的信息?

时间:2015-02-16 14:09:21

标签: python vim vim-syntax-highlighting

例如,如果我正在编写Vimscript函数来操作Python语法,那么知道一行是常规代码,注释还是用三引号括起来可能会很有用。我假设语法highligher已经弄清楚了这些事情。我可以在自己的Vim函数中轻松访问该信息,还是必须使用自己的解析逻辑?

def eight_the_hard_way():
    '''
    Blah blah.
    '''
    # Blort!
    x = 4 + 4
    return x

我对这些信息进行了一些搜索,但到目前为止还没有直接找到这个主题。

1 个答案:

答案 0 :(得分:3)

是的,使用synID()函数,您可以获取特定光标位置的语法ID。

有两个并发症:

  1. 您通常希望与特定的突出显示组(例如Comment
  2. 进行比较
  3. 由于语法嵌套,实际上可以在某个位置存在整个语法堆栈。
  4. :help synID()还有其他提示和指示如何解决这些问题。 我的ingo-library plugin为此提供了方便的ingo#syntaxitem#IsOnSyntax( pos, syntaxItemPattern )功能。

    另外,请查看SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor插件。它是不可或缺的调试助手。