2013-03-08 2 views
2

Использование VIM для кода на Python Мне часто приходится изменять или удалять параметры функций. Я ожидал найти команду вроде 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

+0

один из моих любимых плагинов сейчас;) – Jul3k

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] (сменить, чтобы найти ]).

Смежные вопросы