Добавление круглых скобок вокруг выделенного текста в Vim


13

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

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

Ответы:


15

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

Он на самом деле может делать много окружения: различные кавычки, теги и т. Д. Он позволяет вам поместить курсор в слово в двойных кавычках и заменить двойные кавычки на одинарные, набрав cs"' (С изменением объемного " в ' ). Или вы можете полностью удалить цитаты, набрав ds" (Удаление объемного звучания " ).

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


1
Вы не объяснили, как это сделать с выбором, хотя. Меня привели сюда, потому что это было не сразу очевидно.
JackHasaKeyboard

@JackHasaKeyboard, что ты имеешь ввиду, я не объяснил, как это сделать с выбором? Второе предложение в моем ответе гласит: & gt; Тогда он с радостью сделает то, что вы хотите, если вы выберите текст и введите sb (объемные скобки) или s),
Dmitry Frank

1
Так ты и сделал. Не работает для меня, хотя, ударяя s просто удаляет выделение и входит в режим вставки.
JackHasaKeyboard

1
Это означает, что плагин "Surround", который я упоминал в своем ответе, установлен неправильно.
Dmitry Frank

Действительно здорово. Я использовал это некоторое время и могу поспорить.
biocyberman

18

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

xi()<Esc>P

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

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

1
Это выглядит как хорошее и простое решение. Если в будущем у меня не возникнет проблем с этим, я предпочту это над дополнительными плагинами. Спасибо!
Zelphir

3
Это хорошее решение, но не такое полное, как использование плагина объемного звучания, поскольку оно не работает, если вы выбираете целые линии (используя V вместо v ). В этом случае он просто вставляет строки под вашими родителями.
Rohan Orton

1

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

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


0

Опираясь на ответ Dotancohens, я положил следующее в моем .vimrc:

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.