Vim
で開いたファイルに次のコードがあります。
<p>Hello stackoverflow!</p>
<p>
タグと</p>
タグを削除し、それらの間に内容を保持するにはどうすればよいですか?つまり、最後に何を押す必要がありますか。
Hello stackoverflow!
私は押すことを知っています dit 反対になります。
Janus を使用しています。
surround.vim プラグインがインストールされている状態で、 dst todeletesurrounding tag。
同様のショートカット:
()
""
''
等々...
簡単な解決策は次のとおりです(タグ内の任意の場所にカーソルを置きます)。
yitvatp
これは何をしますか:
y
-ヤンクit
-タグの内側vat
-タグ全体を選択しますp
-以前にヤンクされたテキストをその上に貼り付けますランディの(+1)の答えが大好きで、タグブロックについて学びました!これは単なる補足的な答えです。
つまり、yitは「内部タグブロックをヤンクする」を意味し、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.
より大きなhtmlブロックでsurround.vimを使用してdstソリューションを試しました。動作しますが、すべての子タグを同じレベルにインデントします。インデントを変更するべきではなく、すべてを台無しにします。
Yitvatpを使用したRandysソリューションも機能しますが、貼り付けたタグの前後に空白行が残ります。
そこに完璧な解決策はありますか?