Додавання дужок навколо виділеного тексту у Vim


14

Чи є функція Vim, яка дозволяє додавати дужки навколо виділеного тексту?

Наприклад, якщо я виділяю n = getchar()в if (n = getchar() == '\n'), я хотів би поставити дужки навколо цього.

Відповіді:


18

Вам потрібно дивовижний і должн- плагін об'ємного звучання . Тоді він із задоволенням зробить те, що ви хочете, якщо ви виберете текст і введіть Sb(об'ємні дужки) або S)(зверніть увагу на велику літеру S!).

Насправді це може зробити багато оточуючих: різні цитати, теги тощо. Це дозволяє помістити курсор у слово з подвійним цитуванням та змінити подвійні лапки на одиничні лапки, ввівши: cs"'(change-surround "to '). Або ви можете повністю видалити лапки, ввівши ds"(delete-surround ").

Прочитайте документи за посиланням, це справді приголомшливо!


1
Ти не пояснив, як це зробити з вибором. Мене сюди привели, бо це було не відразу очевидно.
JackHasaKeyboard

@JackHasaKeyboard, що ти означає, я не пояснив, як це зробити з вибором? Друга сентенція у моїй відповіді говорить:> Тоді вона з радістю зробить те, що ви хочете, якщо ви виберете текст і введіть sb(об'ємні дужки), або s).
Дмитро Франк

1
Так ви і зробили. Не працює для мене, натискання sпросто видаляє виділення та переходить у режим вставки.
JackHasaKeyboard

1
Це означає, що плагін «оточення», про який я згадував у своїй відповіді, встановлений неправильно.
Дмитро Френк

Чудово дійсно. Я використовую це деякий час і можу зробити ставку.
biocyberman

20

На додаток до пропозиції Дмитра про об'ємний плагін , додавання дужок навколо виділеного тексту можна виконати за допомогою наступної команди:

xi()<Esc>P

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

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

1
Це виглядає як приємне і просте рішення. Якщо в майбутньому я не знайду жодних проблем із цим, я віддаю перевагу цьому додатковим плагінам. Спасибі!
Зельфір Кальтшталь

3
Це хороше рішення, але не настільки повне, як використання додатка для об'ємного звучання, оскільки він не працює, якщо ви вибираєте цілі рядки (використовуючи Vзамість них v). У цьому випадку він просто вставляє рядки під вашими паролями.
Рохан Ортон

1

lh-дужки просто прив’язуються (для оточення вибору дужками. На відміну від оточення, він не відповідає звичайній філософії фіксації клавіш vim. Натомість потрібно менше клавіш.

В іншому випадку є багато способів продовжити. Якщо ви не проти занепокоїти реєстр без назви, ви також використовуєте s(^R")<esc>( ^Rяк CTRL-R)


0

Спираючись на відповідь дотанкошенів, я вклав у своє .vimrc:

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.