我:g
在 vim 中使用该命令。有没有办法直接跳转(一个接一个,类似于:cn
)到找到的行:g
?
:h :g
似乎不包含此类设施。
这取决于您对:g
.
如果您的:g
命令没有更改匹配的模式,您可以按n
转到下一个匹配的行。
但是如果您更改了模式,例如您更改了:g/foo/d
or ,那么在您触发命令:g/foo/s/foo/bar/g
后这些行将不存在。:g
那么就没有办法再次到达那条线了。
连续跳转到模式匹配的常用方法是使用普通搜索,而不是全局命令。这是, /<pattern>
, 然后n
是连续匹配。
全局命令:g
用于在一组不连续的行上运行另一个命令。对于一组连续的行,一个范围就足够了。例如::1,5<command>
。
但是,如果由于某种原因您需要使用全局命令,或者只是为了记录,有一种方法可以使用:g
.
在 Vim 的帮助下:
When using "global" in Ex mode, a special case is using ":visual" as a
command. This will move to a matching line, go to Normal mode to let you
execute commands there until you use |Q| to return to Ex mode. This will be
repeated for each matching line. While doing this you cannot use ":global".
To abort this type CTRL-C twice.
要查看完整的故事,:h multi-repeat
.
因此,一步一步,它将是:
进入 ex 模式(按Q
)。
这类似于命令行模式,但在命令执行后您无需返回正常模式,也无需键入前导:
. 要从这里返回正常模式,:visual
使用。
运行执行子命令的全局命令:visual
。这是,:g/<pattern>/visual
。
这将使您进入每场比赛的正常模式。每次,您都可以使用 vim 的所有功能对那场比赛做任何您想做的事情,完成后,回到 ex 模式(Q
再次按下)继续下一场比赛。
当您完成最后一场比赛后,您将再次进入前模式。然后输入:visual
返回正常模式。
根据您的需要,您可以简单地使用:grep
or:vimgrep
代替:g
,这会将匹配的行放入 quickfix 列表中。(使用命令的 l 变体来填充位置列表)。