2013-03-08 25 views
2

在Python中使用VIM进行编码我经常需要更改或删除函数的参数。 我期望找到一个像ci,这样的命令来选择两个逗号之间的文本。不知何故,喜欢在ci"ci(之间选择匹配的括号或括号。如何在vim中选择函数的当前参数

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

参数匹配是困难的(尤其是像嵌套函数调用和阵列构建体)作为它取决于底层语法。这就是为什么没有内置内部/外部参数文本对象。

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

+0

哦,那很好。 – msvalkon 2013-03-08 07:42:07

+0

现在我最喜欢的插件之一;) – Jul3k 2013-03-08 07:52:56

1

我不认为有一个内置的命令,但这里有一些例子可能有所帮助。

选择文本:

ve - 一个字边界结束
vE - 行结束

删除:

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

一些正则表达式魔法也可以做这项工作,如果你必须删除一堆相同的东西。
:%s/\,d.*\]//g - 更换任何与开始和,d]""

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

打开结束到

def function3(a,b): 
    pass 
1

对于简单参数,ciw(字内变化)是等效的。

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