在VIM编辑器中是否有块撤销功能?

19

在Vim编辑器中,是否有一种方法可以选择一个文本块,并使用撤销命令只撤消该文本块中的更改?

比如说,我重写了一个函数,然后去文件的其他地方做了一些修改。之后,我意识到我的第一个函数实现实际上更好。我想撤消对那个函数所做的更改,但是保留我后续添加的内容。

我不知道这是否可能,但我经常希望有这个功能。


很抱歉,我无法提供帮助,但这是一个好问题。 - lucapette
我很想知道是否有一个好的方法来做到这一点。 +1 - gahooa
1
可能有相同的问题在这里:https://dev59.com/ykvSa4cB1Zd3GeqPh-K8 - Samet Atdag
3
我认为这就是Git/Mercurial的作用。 - tungd
2
哎呀,我甚至无法考虑Vim如何在后台处理这个问题。撤销堆栈就是一个堆栈。如果你开始乱搞,把它的一部分拿出来,那么它就不再是一个堆栈了,你最终会得到一个带有多个撤销路径的树形结构——非常非常丑陋。 - Marc B
我同意tungd的观点,这就是SCM软件存在的目的...如果你想要vim集成git,我推荐使用vim-fugitive,它是一个非常棒的插件。它可以让你轻松地将当前版本与提交的版本进行比较,并且用几个按键就可以替换一个代码块。 - François
2个回答

3

目前... 不行。Vim 7.3有可以遍历的撤销分支,但据我所知,在撤销期间,Vim不会关注任何选定的文本。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接