3

使用 VIM 在 Python 中编码我经常不得不更改或删除函数的参数。我希望找到一个命令,比如ci,选择两个逗号之间的文本。不知何故,就像在匹配的括号或括号之间进行选择ci"ci(

def function1(a,b,delete_me, c):
    pass

def function2(a,b,delete_me):
    pass

def function3(a,b,delete_me=[1,2,3]):
    pass

如何使用 VIM 将光标指向所需的参数,从而有效地实现预期结果?

4

3 回答 3

4

参数匹配很困难(尤其是嵌套函数调用和数组等结构),因为它取决于底层语法。这就是为什么没有内置的内部/外部参数文本对象。

我使用argtextobj.vim 插件,它工作得很好。

于 2013-03-08T07:29:22.230 回答
1

我认为没有内置命令,但这里有一些可能会有所帮助的示例。

选择文本:

ve-- 单词边界
vE结束 -- 行尾

删除:

de-- 删除到字尾
dE-- 删除到行尾

如果您必须删除一堆相同的东西,一些正则表达式魔法也可以完成这项工作。
:%s/\,d.*\]//g-- 替换任何开头,d和结尾的]内容""

def function3(a,b,delete_me=[1,2,3]):
    pass

变成

def function3(a,b):
    pass
于 2013-03-08T07:26:11.977 回答
1

对于简单的参数,ciw(change inside word)是等价的。

在您的第三个示例中,如果您的光标位于参数的开头,则cf](更改为 find ])将起作用。

于 2013-03-08T07:35:03.820 回答