如何执行带有Vim范围的:g style命令

时间:2016-10-29 13:18:44

标签: vim

使用Vim,如果我想删除包含文本pending的每一行,我可以这样做:

:g/pending/d

如何使用范围进行此操作?假设我想删除文本pending的每一行,但只删除第0行和第60行(或者在0和此之间),例如:

:0,./pending/d

我已经搜索过,但我没有看到如何做到这一点。我知道你能做到 :0,. normal <command>但是我不确定有条件地删除一行的正常模式命令是什么。

P.S。你在哪里帮助学习这些东西;)

1 个答案:

答案 0 :(得分:4)

与大多数(如果不是全部)Ex命令一样,:global占用范围。因此,如果:g/pending/d在整个缓冲区中执行您想要的操作,它也会在给定范围内执行您想要的操作:

:1,.g/pending/d

至于在哪里可以找到这一点,嗯......只看Vim的文档。

:help :global说:

                                                *:g* *:global* *E147* *E148*
:[range]g[lobal]/{pattern}/[cmd]
                        Execute the Ex command [cmd] (default ":p") on the
                        lines within [range] where {pattern} matches.

这很清楚。

注意:行从1开始。