Vim替换所有没有光标移动

时间:2012-05-06 05:20:00

标签: vim macvim

在Vim,当我这样做时:

:%s/foo/bar/g

它将在整个文档中用'bar'替换所有'foo'。完成后,光标移动到'foo'替换为'bar'的最后位置。

如果在发出此命令之前光标没有离开原始位置,如何运行:%s/foo/bar/g

我可以在.vimrc文件中设置一些选项吗?

2 个答案:

答案 0 :(得分:30)

运行:substitute命令时,在完成实际替换之前, 光标的位置存储在跳转列表中。为了回归 在最近一次跳转之前的位置,可以使用``''普通模式 命令。而前者完全跳到存储位置,后者 将光标移动到该行所在的第一个非空白字符 位置。

因此,要快速将光标返回其原始位置,请键入 替换命令完成后,` `

要组合替换并将光标移动到一个命令中,请发出

:%s/pat/str/g|norm!``

或者,如果它足以不跳到精确位置而只跳到它的线,

:%s/pat/str/g|''

如上所示,''可以优先于norm!''使用:help :range 命令,因为Ex命令的范围语法(请参阅{{1}})。

答案 1 :(得分:24)

我只需在替换后键入 Ctrl + O 即可返回上一个位置。