如果我想删除每个单词,那很容易,因为我会做这样的事情:

字”?例如,假设我要删除包含“ WORD”的每一行。我可以想到几种方法来完成此操作,但似乎没有一种是理想的方法。

1)

:s%/WORD//g


,然后手动按xyz直到不再出现。但是,如果要执行很多行,这将很耗时。

2)

,然后例如:

/WORD


但这将要么A)丢失一堆线,要么B)删除一堆多余的线。 br />有更好的方法吗?

评论

请注意,您所描述的500 @ d实际上是安全的。一旦找不到搜索词,宏播放将停止。因此,在删除所有包含该行的行之后,您只会看到错误“未找到模式:WORD”。

@Wildcard谢谢,真是太好了!

#1 楼

您可以为此使用:global:normal命令。 :global命令具有以下语法:然后,您可以使用:normal命令使用:global在每个单词出现时运行一​​系列击键。类似这样: br />
请注意,每次出现特殊键之前必须加一个反斜杠。

有关这些命令的更多信息,请参阅<Ctrl>:execute

评论


击败我我猜我打字太慢了。 :)

–通配符
2015年10月13日在17:57

#2 楼

仅出于完整性考虑,如果您匹配-在您的示例中(删除包含WORD的整行)-包含WORD的整行,则可以使用:substitute,例如:

>这具有隐式的“替换匹配,不包含任何内容”,即它的缩写形式:

带有\zs\ze(在替换零件中),\(可能非常强大。

#3 楼

看来您正在寻找:global

:g/WORD/d_


评论


下划线是做什么的?

–通配符
15年10月13日在17:48

这可行,但是我所知道的命令都不起作用。我不断收到“不是编辑器命令”。

–詹姆斯
2015年10月13日在17:56

@Wildcard:下划线将丢弃正在剪切的内容。执行的命令实际上是:delete,而不是普通模式操作d。

–卢克·赫米特(Luc Hermitte)
2015年10月14日在7:22

@DJMcMayhem:对于其他常规操作,您需要:normal。而且,如果需要特殊键,甚至可能需要:exe->`exe“ normal aFooFar \

–卢克·赫米特(Luc Hermitte)
2015年10月14日在7:24