Как удалить HTML-теги, а не содержимое в Vim


у меня есть следующий фрагмент кода в файл, который я открыл в Vim:

<p>Hello stackoverflow!</p>

как я могу удалить <p> и </p> теги, но сохранить содержимое между ними? То есть, что я должен нажать, чтобы закончить:

Hello stackoverflow!

Я знаю клавишей dяt будет делать наоборот.

я использую Янус.

5 58

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 тоже работает, но оставляет меня с пустой строкой до и после вставленного тега.

любое идеальное решение там?