我刚刚了解到vim的真正强大之处——对象选择功能。在光标位于某个“文本对象”内部时,一组简单的动词可以选择或操作整个对象。例如,在下面引号中的任何位置放置光标(例如在'o'上):
print "Hello, world"
^
命令
vi"
将选择引号内的整个短语。同样的功能也适用于许多vim定义的"文本对象",包括单词、句子、段落以及由引号、括号和大括号括起来的字符。但现在我希望这个“文本对象”的概念能够意识到我所写的语言。例如,考虑以下Python代码:
re.sub("[^A-Z ]", " ", string)
我希望能够将光标放在某个位置,并选择整个内容。该函数调用是一个明确定义的语法结构,但它不是一个“单词”、“句子”、“段落”,也没有引号或大括号包围。
是否有任何插件或vimrc黑客存在,定义这些依赖于语言的“文本对象”?