Vim-ярлык для добавления аргументов в функцию

StackOverflow https://stackoverflow.com/questions/95106

  •  01-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

?

Примечание:

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

HTH,

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

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

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

карта, a ma?функция: nohlf(a

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top