从光标向前删除到 VIM 中 HTML 标记的末尾?

Delete forward from cursor to the end of HTML tag in VIM?

我们可以用“dit”删除HTML标签中的所有内容。

但我的问题是,在示例中,我想保留第一行并删除其余行,而不使用像“7dd”这样的命令。

有没有比在这种情况下使用“7dd”更好的方法?谢谢。

<section className="booklist">
  <Book /> ==> I want to keep this line, and delete the rest
  <Book />
  <Book />
  <Book />
  <Book />
  <Book />
  <Book />
  <Book />
</section>

您可以使用 d/<string> 删除第一次出现 <string> 之前的所有内容。

要在您的示例中执行此操作:将光标放在第一列的第三行并键入:d/<\/sec 并按 <CR> (Enter) 删除行。


此方法的唯一缺点是它更改了 last-search 寄存器 ("/)。

我认为你不能直接移动到文本对象的开头或结尾,但是在你的示例中实现你想要的并保持使用“标签”文本对象的优势的一种方法是

Vitojd

如中,line-wise可视化select标签的内容,跳转到selection的第一行,de-select就可以了(通过向下移动) , 删除.

这是一个变体:

vit<Esc>d''
  • vit<Esc> 视觉选择整个内部标签,但我们真正想要的是将光标移动到区域末尾的副作用,因此我们离开视觉模式。
  • d'' 从这里切到我们在最后一个垂直运动之前所在的线。

这是另一个:

V/sec/-<CR>d
  • V/sec/-<CR> 进入 visual-line 模式并将其扩展到下一次出现的 sec 减去一行。
  • d 删除视觉选择的行。

另一种解决方案可以是d/<string>/-

在这个例子中:d/sec/-

但是光标必须位于第一个开头 <Book />