13

Есть ли в Vim функциональность, позволяющая добавлять круглые скобки вокруг выделенного текста?

Например, если я выделю n = getchar() в if (n = getchar() == '\n') , я бы хотел заключить это в скобки.

4 ответа4

18

В дополнение к предложению Дмитрия о плагине объемного звучания, добавление круглых скобок вокруг выделенного текста может быть сделано с помощью следующей команды:

xi()<Esc>P

Вы можете установить карту в визуальном режиме, используя (например) \s , добавив в файл ~/.vimrc :

xnoremap <leader>s xi()<Esc>P
15

Вы должны удивительные и должны иметь плагин объемного звучания. Затем он с радостью сделает то, что вы хотите, если вы выделите текст и Sb (объемные скобки) или S) (обратите внимание на заглавную S!).

Он на самом деле может делать много окружения: различные кавычки, теги и т.д. Он позволяет вам поместить курсор в двойные кавычки и заменить двойные кавычки на одинарные кавычки, набрав: cs"' (change -round " to '). Или вы можете полностью удалить кавычки, набрав ds" (delete -round ").

Читайте документы по ссылке, это действительно круто!

1

lh-brackets просто связывает ( чтобы окружить выделение скобками. В отличие от Surround, он не следует обычной философии связывания клавиш vim, как это делает. Вместо этого требуется меньше ключей.

В противном случае есть много способов продолжить. Если вы не возражаете испортить неназванный регистр, вы также используете s(^R")<esc> (^R как CTRL-R)

0

Основываясь на ответе dotancohens, я добавил в свой .vimrc:

xnoremap <leader>( <ESC>`>a)<ESC>`<i(<ESC>

Вы можете легко создавать аналогичные сопоставления для [], {} и т.д. Он работает путем перехода к начальным и конечным маркерам, неявно установленным после завершения визуального режима. Таким образом, выбор целых строк добавит парены в начале / конце первой / последней строки; он не перезапишет ваш регистр янки; и он оставит курсор прямо перед открытием парен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .