Подберите и замените весь визуальный диапазон в vim - PullRequest
1 голос
/ 02 октября 2011

Я хотел визуально отметить несколько линий, а затем окружить весь диапазон

и

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

:'<,'>s/^\(\_.*\)\%V/<p>\1<\/p>/

Есть ли лучший способ сделать это или кто-то может объяснить, почему это работает?

\_. соответствует каждому символу, включая конец строки. Швы ^ (начало строки) и \%V (соответствуют визуальному диапазону) ведут себя странно. Например, документация предполагает, что вы используете два \%V, чтобы окружить свое выражение, но это не требует швов. Использование no \%V или наличие только одного в начале соответствует всему буферу. Удаление ^ приводит к тому, что последняя строка сопоставляется и подставляется отдельно. A $ в конце швов также не требуется.

1 Ответ

5 голосов
/ 02 октября 2011

1. Используйте Surround Vim

Вы можете использовать surround.vim , в визуальном режиме:

s<p Введите

например. vat (визуальный выбор тега «вокруг»), s<p окружение с <p>...</p>

Разбивка:

  • НДС (визуально выберите тег; сделайте любой визуальный выбор, который вы хотели)
  • s <(окружить тегом), в данном случае <code>p

2. Используйте команды ex с маркерами диапазона

Редактировать : без объемного звука вы можете либо

: Cu <</kbd> я Введите <p> Esc

: '> а Введите </p> Esc

3. Используйте плагин yank и XML filetype для вставки содержимого регистра:

Или намного проще:

* ** тысяча семьдесят две тысячи семьдесят-три * д * * тысячи семьдесят-пять О * +1077 ** ** 1079 тысячи семьдесят-восемь * 1 * ** 1 081 * Кр тысячи восемьдесят-два "* ** 1086 тысяча восемьдесят пять * Esc

Обратите внимание, что в 1 мой плагин XML-типа (по-моему, по умолчанию) автоматически предоставил закрывающий тег (</p>), поэтому мы можем просто вставить yanked содержимое с использованием Cr " --- даже без выхода из режима вставки!

...