【问题标题】:In Vimscript, is it possible to access information known by the syntax highlighter?在 Vimscript 中,是否可以访问语法高亮显示的信息?
【发布时间】:2015-02-16 14:09:21
【问题描述】:

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

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

我已经搜索了相当多的信息以获取此信息,但到目前为止还没有找到与此主题相关的任何内容。

【问题讨论】:

    标签: python vim vim-syntax-highlighting


    【解决方案1】:

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

    有两个并发症:

    1. 您通常希望与特定的高亮组进行比较(例如Comment
    2. 由于语法嵌套,一个位置实际上可以有整个语法堆栈。

    :help synID() 有额外的提示和指针如何解决这些问题。 我的ingo-library plugin为此提供了一个方便的ingo#syntaxitem#IsOnSyntax( pos, syntaxItemPattern )函数。

    另外,请查看SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor 插件。是必不可少的调试辅助工具。

    【讨论】:

    • 谢谢——非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多