Как удалить теги HTML, а не содержимое в Vim
У меня есть следующий фрагмент кода в файле, который я открыл в Vim
:
<p>Hello stackru!</p>
Как я могу удалить <p>
а также </p>
теги, но держать содержимое между ними? То есть, что я должен нажать, чтобы закончить:
Hello stackru!
Я знаю, что нажатие кнопки сделает противоположное.
Я пользуюсь Янусом.
5 ответов
Установив плагин round.vim, нажмите кнопку d, чтобы удалить значок.
Подобные ярлыки:
- d s ( - удалить круглые скобки
()
- d s " - удалить двойные кавычки
""
- d s ' - удалить окружающие одинарные кавычки
''
и так далее...
Простое решение будет (с курсором в любом месте внутри тега):
yitvatp
Что это делает:
y
- янкиit
- внутри тегаvat
- выбирает весь тегp
- вставляет поверх него ранее выдернутый текст
Люблю ответ Рэнди (+1), и я только что узнал о блоках тегов! Это просто дополнительный ответ.
Таким образом, yit означает "блок внутреннего тега yank", а vat означает "перейти в визуальный режим и выбрать (весь) блок тега".
Это только для тех, кому лень читать файл справки:
Tag blocks *tag-blocks*
For the "it" and "at" text objects an attempt is done to select blocks between
matching tags for HTML and XML. But since these are not completely compatible
there are a few restrictions.
The normal method is to select a <tag> until the matching </tag>. For "at"
the tags are included, for "it" they are excluded. But when "it" is repeated
the tags will be included (otherwise nothing would change). Also, "it" used
on a tag block with no contents will select the leading tag.
"<aaa/>" items are skipped. Case is ignored, also for XML where case does
matter.
In HTML it is possible to have a tag like <br> or <meta ...> without a
matching end tag. These are ignored.
The text objects are tolerant about mistakes. Stray end tags are ignored.
Сопоставьте это с ключом по вашему выбору:
vat<Esc>da>`<da>
Взято с http://vim.wikia.com/wiki/Delete_a_pair_of_XML/HTML_tags
Я пробовал решение DST с Surround.vim на больший блок HTML. Это работает, но отступает все дочерние теги на одном уровне. Это не должно изменить отступ, все портит.
Решение Randys с yitvatp тоже работает, но я оставляю пустую строку до и после вставленного тега.
Есть ли идеальное решение там?