我刚刚了解到真正棒的 object-select vim 的能力。当光标位于某个“文本对象”内时,一组简单的动词可以选择或操作整个对象。例如,将光标放在下面引号内的任何位置(例如在 'o' 上):
print "Hello, world"
^
命令
vi"
将选择引号内的整个短语。相同的功能适用于 vim 定义的许多“text objects”,包括单词、句子、段落和用引号、括号和大括号括起来的字符。但是现在我希望“文本对象”的概念能够了解我正在编写的语言。例如,考虑以下 python:
re.sub("[^A-Z ]", " ", string)
我希望能够将光标放在某个地方,然后选择整个内容。函数调用是一个定义明确的句法结构,但它不是“单词”、“句子”、“段落”,也不是用引号或大括号括起来。
是否有任何插件或 vimrc hack 定义了这些依赖于语言的“文本对象”?
最佳答案
This script使用缩进来定义文本对象。如果您根据通用标准进行格式化,它将适用于多种语言,并且保证适用于 python。
关于Vim 对象选择与语法感知文本对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196424/