在vim中更改HTML标记,但保留属性(环绕声)

caz*_*zgp 37 html vim surround

假设我有一个标签(并且光标位于*):

<h1 class="blah" id="moo">H*ello!</h1>
Run Code Online (Sandbox Code Playgroud)

我想将其更改为:

*<h2 class="blah" id="moo">Hello</h2>
Run Code Online (Sandbox Code Playgroud)

即更改标记的类型,但保留所有元素.

使用surround.vim,我可以这样做:

cst<h2>
Run Code Online (Sandbox Code Playgroud)

但是这会将HTML更改为:

*<h2>Hello</h2>
Run Code Online (Sandbox Code Playgroud)

只是更改标签,但保留所有属性?环绕声文档似乎没有包含这样的内容......

Woj*_*ski 86

在保留属性的同时替换标记已添加到Surround.vim中

cst<p>替换整个标记,而cst<p(没有右括号)保留属性.


Sur*_*man 17

您可以使用cstt它,它将显示<在底部并键入标签名称>

在这种情况下,cstth2然后按Enter键.

  • 这很棒!我也想知道为什么这有效。vim-surround 中的 `cst` 是有道理的,但是额外的 `t` 有什么作用呢? (2认同)

Ken*_*ent 7

我有xml.vim插件(https://github.com/othree/xml.vim).如果你也拥有它,你的要求相当容易.

只需将光标移动到标签,按<leader>c(小写c),然后输入新的标记名,只会更改标签名称.

如果按<leader>C(Big C),也会重命名标记/元素,但也会删除原始属性.