2013-03-08 30 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](更改爲查找])將起作用。