在Vim,当我这样做时:
:%s/foo/bar/g
Run Code Online (Sandbox Code Playgroud)
它将在整个文档中用'bar'替换所有出现的'foo'.完成后,光标移动到'foo'替换为'bar'的最后位置.
:%s/foo/bar/g在发出此命令之前,如何在没有光标离开原始位置的情况下运行?
我可以在.vimrc文件中设置一些选项吗?
ib.*_*ib. 30
:substitute运行该命令时,在完成实际替换之前,光标的位置存储在跳转列表中.为了返回到最近跳转之前的位置,可以使用``或''正常模式命令.前者完全跳转到存储位置,后者将光标移动到该位置所在行的第一个非空白字符.
因此,要快速将光标返回到其原始位置,请``在替换命令完成后键入 .
要组合替换并将光标移动到一个命令中,请发出
:%s/pat/str/g|norm!``
Run Code Online (Sandbox Code Playgroud)
或者,如果它足够跳到精确位置而不是跳到它的线上,
:%s/pat/str/g|''
Run Code Online (Sandbox Code Playgroud)
如上所示,由于Ex命令的范围语法(请参阅参考资料),''因此可以优先使用norm!''第二个命令:help :range.