Заключайте абзацы с тегами <p> в vim


4

Я попытался создать сопоставление, чтобы заключить визуально выбранные абзацы в

теги:

vnoremap <silent> _p <Esc> `> a </ p> <Esc>` <i <p> ​​<Esc>: '<,'> s / \ n \ {2,} / <\ / p> \ r \ г <р> / г <CR>

К сожалению, это отображение всегда добавляет нежелательное </p>\r\r<p>в конце выделения (то есть позади </p>добавленного за последним символом в шаге 1).

Выбор не заканчивается двойным переводом строки, поэтому шаблон не должен совпадать. Что я делаю неправильно?

От ответа

Спасибо, Ромен, у меня установлен плагин объемного звучания, но это бесполезно, когда выделенный блок содержит несколько абзацев. Вышеупомянутое сопоставление используется для этого случая, а не для того, чтобы заключить один абзац.

Мое отображение сначала добавляет </ p> в конец, затем <p> в начало выделения, после чего оно должно заменять каждое вхождение двух или более разрывов строк соответствующей комбинацией закрывающего и открывающего тегов.

Я до сих пор не понимаю, почему шаблон замены применяется к концу выделения, которое никогда не состоит из двойного переноса строки.


Пожалуйста, просмотрите FAQ. Это не форум. Пожалуйста, используйте комментарии, чтобы ответить на ответы или альтернативно обновить ваш вопрос с дополнительной информацией.
BinaryMisfit,

Ответы:


0

Это на самом деле не прискорбно, поскольку именно об этом вы и просите явно с этой :'<,'>s/\n\{2,}/<\/p>\r\r<p>/g<CR>частью.

Визуально выбранный блок идеально вложен <p></p>прямо перед :.

Знаете ли вы о плагине объемного звучания ? Это прекрасно решает и другие проблемы. Этот плагин является обязательным при редактировании HTML.


0

После более подробного изучения документации по \% V я могу ответить на вопрос сам:

Чтобы убедиться, что весь шаблон находится внутри визуальной области, поместите \% V в начало и конец шаблона.

Таким образом, мое отображение должно быть изменено на

vnoremap <silent> _p <Esc> `> a </ p> <Esc>` <i <p> ​​<Esc>: '<,'> s / \% V \ n \ {2,} \% V / < \ / р> \ г \ г <р> / GE <CR>: Нол <CR>

Я прошу прощения за неправильное исследование до публикации моего вопроса.

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