Я хотел визуально отметить несколько строк, а затем окружить весь диапазон ‹p› и ‹/p›. После долгих возни я придумал эту заменяющую команду, которая, похоже, работает:
:'<,'>s/^\(\_.*\)\%V/<p>\1<\/p>/
Есть ли лучший способ сделать это или кто-нибудь может объяснить, почему это работает?
\_.
соответствует всем символам, включая конец строки. Швы ^
(начало строки) и \%V
(совпадение визуального диапазона) ведут себя странно. Например, в документации предлагается использовать два \%V
для окружения выражения, но в этом нет необходимости. Отсутствие \%V
или наличие только одного в начале соответствует всему буферу. Удаление ^
приводит к тому, что последняя строка сопоставляется и заменяется отдельно. $
на конце шва тоже не нужно.