Vim的全部更换,而不光标移动(Vim replace all without cursor mov

2019-07-29 06:50发布

在Vim中,当我这样做:

:%s/foo/bar/g

它将替换整个文档中的“酒吧”“富”的所有发生。 当它完成后,光标移动到“富”与“酒吧”取代了最后的位置。

你怎么跑:%s/foo/bar/g无光标离开原来的位置发出此命令之前?

有一些选择,我可以在设定.vimrc文件?

Answer 1:

我只是按Ctrl + O后替换找回以前的位置。



Answer 2:

:substitute运行命令,实际置换完成之前,光标的位置存储在跳转列表。 为了在上次跳转返回到位置,可以使用``''普通模式命令。 虽然前者跳转恰好所存储的位置,后者将光标移动到其中该位置位于所述行的第一个非空白字符。

因此,能够快速返回光标回到原来的位置,类型``替换命令完成后。

要结合替代,将光标移动到一个命令,问题

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

或者,如果它足够跳不是精确位置,但只有它的线,

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

如上所示, ''可以优先使用norm!''在第二命令,因为实施例的范围语法命令(参见:help :range )。



文章来源: Vim replace all without cursor moving
标签: vim macvim