例如,如果我正在编写Vimscript函数来操作Python语法,那么知道一行是常规代码,注释还是用三引号括起来可能会很有用。我假设语法highligher已经弄清楚了这些事情。我可以在自己的Vim函数中轻松访问该信息,还是必须使用自己的解析逻辑?
def eight_the_hard_way():
'''
Blah blah.
'''
# Blort!
x = 4 + 4
return x
我对这些信息进行了一些搜索,但到目前为止还没有直接找到这个主题。
答案 0 :(得分:3)
是的,使用synID()
函数,您可以获取特定光标位置的语法ID。
有两个并发症:
Comment
) :help synID()
还有其他提示和指示如何解决这些问题。
我的ingo-library plugin为此提供了方便的ingo#syntaxitem#IsOnSyntax( pos, syntaxItemPattern )
功能。
另外,请查看SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor插件。它是不可或缺的调试助手。