在Vim,当我这样做时:
:%s/foo/bar/g
它将在整个文档中用'bar'替换所有'foo'。完成后,光标移动到'foo'替换为'bar'的最后位置。
如果在发出此命令之前光标没有离开原始位置,如何运行:%s/foo/bar/g
?
我可以在.vimrc
文件中设置一些选项吗?
答案 0 :(得分:30)
运行:substitute
命令时,在完成实际替换之前,
光标的位置存储在跳转列表中。为了回归
在最近一次跳转之前的位置,可以使用``
或''
普通模式
命令。而前者完全跳到存储位置,后者
将光标移动到该行所在的第一个非空白字符
位置。
因此,要快速将光标返回其原始位置,请键入 替换命令完成后,` `。
要组合替换并将光标移动到一个命令中,请发出
:%s/pat/str/g|norm!``
或者,如果它足以不跳到精确位置而只跳到它的线,
:%s/pat/str/g|''
如上所示,''
可以优先于norm!''
使用:help :range
命令,因为Ex命令的范围语法(请参阅{{1}})。
答案 1 :(得分:24)
我只需在替换后键入 Ctrl + O 即可返回上一个位置。