跳过Vim中的撤消步骤

| 假设我在文档中处于状态A。然后,我依次更改B,C和D。 有没有办法让我保留更改B和D,但跳过C? 或者,假设我在文档中处于状态A。我进行更改B,撤消它,然后进行更改C和D(因此Vim具有两个分支的撤消树)。然后我改变主意,决定要使用B和D,而不要使用C。 我如何在Vim中做到这一点?我已经安装了
gundo.vim
插件,但是没有使用太多。     
已邀请:
好吧,我会对此说一声刺耳:不,我不认为有一种方法可以完全按照您的意愿使用vim。
gundo.vim
为vim的撤消添加了一个不错的界面,但未更改其核心功能。因此,我看了看官方的vim文档,看是否有任何提示可以支持它: vim docs:撤消 用户手册页关于撤消 没有什么要合并两个分支在一起。我认为ewh和ZyX是对的:要获得将B与D合并的一般解决方案,vim需要 Bram在将来的版本中将其添加为单独的功能 有人通过与已经可以合并的东西集成(例如git / hg)在插件中实现它 当然,您可以尝试打开包含版本B,C和D以及一些差异的文件来手动进行操作。 注意:如果我误解了,而您又不想问一个通用的解决方案,并且正在寻求有关此特定实例的帮助,请告诉我,我会看看我能做什么:)     
  有没有办法让我保留更改B和D,但跳过C? 您处于状态D。:w file.ext_D 回溯到状态C。:w file_ext_C 回溯到状态B。:w file.ext_B
:!kdiff3 file.ext_B file.ext_C file.ext_D
这给出了差异的3种合并方式,但是仍然需要手动进入并为每次合并冲突选择D中的每个红线。并非完全简单的解决方案。 相反,如果你这样做
:!kdiff3 file.ext_C file.ext_B file.ext_D
然后合并会自动发生(具有多个更改的单个行除外) 对于更复杂的场景,它将变得更加困难。 注意:我不确定版本控制工具有多大帮助。您基本上是在做一些事情,例如在B和D之间创建一个补丁,然后从中减去从C到D的补丁。在我看来,修订控制系统通常设计为管理不同更改源之间的合并,而不是沿单个分支的更改。 kdiff3可从以下网站获得:http://kdiff3.sourceforge.net/     

要回复问题请先登录注册