删除Vim中HTML标记之间的文本?


164

我知道

di<

将删除HTML标记本身。

有没有一种简单的方法可以删除两个标签之间的文本?

<span>How can I delete this text?</span>

谢谢!

Answers:


321

dit将删除匹配的XML标签之间的文本。(it用于“内部标签块”。)

请参阅:h it:h tag-blocks


30
而且,当然,cit当您随后要写时。
Debilski

6
例如,当您要执行诸如将周围的标签(cst)从<p>更改为<div>的操作时,Surround插件(vim.org/scripts/script.php?script_id=1697)很棒。
克里斯·詹金斯

4
还有一个dat(删除A标签块),其中包含实际标签。cit像dit一样,但是之后进入插入模式。像dat一样的猫,但是之后进入插入模式。还二”和分别二(用于删除内双引号和删除内括号。
aiham

@KrisJenkins您可以显示一个完整的示例如何实现该目标吗?我只能使用引号/括号来做到这一点。
FelikZ

1
同样vat(或vit),然后重复at(或it)以逐步选择周围的标签。(或v2at等)。然后d删除(等)。
Joe Freeman

27
cit
ci"

vim的两个最佳生产力启用程序命令。

仅通过这两个,我就节省了大量时间和精力。


3
cit被覆盖在该线程中,但为了后代,ci"将删除最多"找到的下一个。非常适合更改html标签中的类名,例如<span id="really long annoying-id">-首先用光标将光标"击中,ci"然后放入引号之间插入新字符。
Alex Moore-Niemi 2015年

ciw删除当前单词也很有用;我用它比citci"实际。
John Sparwasser

2
@ AlexMoore-Niemi:ci"实际上将删除左侧的文本直到下一个引号,然后删除右侧的文本直到下一个引号,然后进入插入模式。ct"实际上是“删除到下一个“找到的”命令。但是,是的,如果光标在左引号下,它的行为相同
。– schlimmchen

9

当光标位于要删除的第一个字符上时,尝试dt <。在您的示例中,“ H”。


在其他情况下也非常有用,谢谢!(我认为应该是“ dt <”)
CMB

1
尽管从技术上讲这是正确的,但它需要导航到要删除的第一个字符,而不是仅跳到该行中的任何位置。但是,真是真的。:-)
lyonsinbeta

4

(将光标放在要删除的第一个字符上v / <[enter] d

此解决方案从第一个字符开始,然后进入可视模式(“ v”)。然后搜索下一个起始括号(“ / <”),然后按Enter键退出搜索。

此时,您的视觉选择将覆盖要删除的文本。按d(“ d”)将其删除。

如果必须对一堆标签执行此操作,则记录该命令并将其与其他一些搜索组合以使其可重复。键序列可能如下所示:

[ 文件开头的光标 ] qa /> [enter] lv / <[enter] dnq

然后按:

20 @ a

为此20个标签


c/<[enter]在“ Vim生活”中,我曾经经常使用命令,但是现在我对此感到有些遗憾。您会看到,大多数流行的其他编辑器/ IDE的“ Vi-mode”插件都不支持这种特定类型的命令。他们支持citci"ct<和但是。所以,我要重新教学。
pilat

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.