Как удалить HTML-теги, а не содержимое в Vim
у меня есть следующий фрагмент кода в файл, который я открыл в Vim
:
<p>Hello stackoverflow!</p>
как я могу удалить <p>
и </p>
теги, но сохранить содержимое между ними? То есть, что я должен нажать, чтобы закончить:
Hello stackoverflow!
Я знаю клавишей dяt будет делать наоборот.
я использую Янус.
5 ответов:
С surround.ВИМ плагин установлен, нажмите клавишу dst до delete s urrounding t ag.
похожие ссылки:
- ds( - удалить окружающие скобки
()
- ds" - удалить окружающие двойные кавычки
""
- ds' - удалить окружающие одинарные кавычки
''
и так далее...
простое решение было бы (с курсором в любом месте внутри тега):
yitvatp
это:
y
- янкиit
- внутри тегаvat
- выделить весь тегp
- вставляет ранее дернутый текст над ним
ответ Love Randy'S (+1), и я только что узнал о блоках тегов! Это просто дополнительный ответ.
таким образом, yit означает "yank inner tag block", А vat означает " перейти в визуальный режим и выбрать a (весь) метка блока".
Это только для тех, кто слишком ленив, чтобы прочитать файл справки:
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 тоже работает, но оставляет меня с пустой строкой до и после вставленного тега.
любое идеальное решение там?