Ярлык Vim для добавления аргументов в функцию - PullRequest
1 голос
/ 18 сентября 2008

Есть ли ярлык Vim для перехода к списку аргументов текущей функции? Мне часто приходится возиться с списком аргументов функции, и это раздражает необходимость делать «def» или «function» или 10k или что-то еще, пока я наконец не доберусь до этого, затем / (или t или 5e, чтобы добраться до нужной позиции в списке аргументов и т. д. Было бы здорово, если бы я мог просто нажать, например, и сразу же перейти в режим вставки в конце / начале списка аргументов.

Возможные подходы:

  • Складные
  • Поддержка тегов (ctags)

Кроме того, я использую Python, поэтому решения, основанные на фигурных скобках, к сожалению, не будут работать.

Если такого ярлыка не существует, я просто напишу его и опубликую здесь в качестве ответа. : -)

Ответы [ 3 ]

3 голосов
/ 18 сентября 2008

Отказ от ответственности, я не знаю Python, я предполагаю, что функция Python может быть идентифицирована с помощью «function» или «def» из вашего вопроса. Просто измените регулярное выражение.

Может быть что-то вроде:

   :nnoremap <buffer> [m :call search('def\|function', 'b')<cr>f(

Примечание:

  • Я использовал search (), чтобы не портить историю поиска; searchpair () может быть лучшим выбором, поскольку он будет переходить только к определению функции, в которой мы находимся, вместо предыдущей функции.
  • Поскольку это предназначено для работы только с Python, я использую , чтобы не испортить привязку клавиш в файлах, отличных от Python; это отображение лучше всего определить в python ftplugin.

НТН,

1 голос
/ 08 января 2009

Надежный способ добраться до начала функции - использовать [[. Итак, вы используете

карта, ма [[kf (a

)

чтобы можно было перейти к определению функции, найти первое вхождение "(" и затем перевести вас в режим вставки.

1 голос
/ 18 сентября 2008

карта, ма [{F (a

)

Нажмите a, чтобы перейти к списку аргументов, затем `a, чтобы вернуться туда, где вы были, когда вы вызывали, a. Предостережение: [{возвращается к последнему непревзойденному символу {, поэтому, если вы находитесь внутри цикла или другой управляющей структуры, вместо этого вы перейдете к началу этого.

Я не знаю, как добраться до начала функции безошибочным способом. Если вы последовательны в использовании табуляции, вы можете сделать что-то вроде этого:

map, ma? Function: nohlf (a

где, если вы не используете одну вкладку до того, как определите свои функции, вы измените на соответствующее значение.

...