Я попытался создать сопоставление, чтобы заключить визуально выбранные абзацы в
теги:
vnoremap <silent> _p <Esc> `> a </ p> <Esc>` <i <p> <Esc>: '<,'> s / \ n \ {2,} / <\ / p> \ r \ г <р> / г <CR>
К сожалению, это отображение всегда добавляет нежелательное </p>\r\r<p>
в конце выделения (то есть позади </p>
добавленного за последним символом в шаге 1).
Выбор не заканчивается двойным переводом строки, поэтому шаблон не должен совпадать. Что я делаю неправильно?
От ответа
Спасибо, Ромен, у меня установлен плагин объемного звучания, но это бесполезно, когда выделенный блок содержит несколько абзацев. Вышеупомянутое сопоставление используется для этого случая, а не для того, чтобы заключить один абзац.
Мое отображение сначала добавляет </ p> в конец, затем <p> в начало выделения, после чего оно должно заменять каждое вхождение двух или более разрывов строк соответствующей комбинацией закрывающего и открывающего тегов.
Я до сих пор не понимаю, почему шаблон замены применяется к концу выделения, которое никогда не состоит из двойного переноса строки.
Ответы:
Это на самом деле не прискорбно, поскольку именно об этом вы и просите явно с этой
:'<,'>s/\n\{2,}/<\/p>\r\r<p>/g<CR>
частью.Визуально выбранный блок идеально вложен
<p></p>
прямо перед:
.Знаете ли вы о плагине объемного звучания ? Это прекрасно решает и другие проблемы. Этот плагин является обязательным при редактировании HTML.
источник
После более подробного изучения документации по \% V я могу ответить на вопрос сам:
Таким образом, мое отображение должно быть изменено на
Я прошу прощения за неправильное исследование до публикации моего вопроса.
источник