VIM::撤消指定文本上或周围的更改

VIM::撤消指定文本上或周围的更改,vim,undo-redo,Vim,Undo Redo,在VIM中,是否可以撤消特定文本块上或周围的更改?假设我在“如果是”“的右上方更改了A,然后在文件的其他位置更改了B、C、D和E。如果是,是否可以告诉vim“撤销中+/-10行中的更改?” 我发现这是不可能的,或者至少在vanilla vim中是不可能的。有人知道有什么插件允许这种行为吗?有了这个插件,你可以轻松地在撤销树中移动 因此,只需返回到原始部分(如果是,则在附近),用ma标记它 返回到树上的上一个状态(即使它撤消了其他更改) 将要保留的区域复制(拖动)到寄存器中(例如,通过选择可视线-

在VIM中,是否可以撤消特定文本块上或周围的更改?假设我在
“如果是”
“的右上方更改了A,然后在文件的其他位置更改了B、C、D和E。如果是,是否可以告诉vim“撤销
中+/-10行中的更改?”

我发现这是不可能的,或者至少在vanilla vim中是不可能的。有人知道有什么插件允许这种行为吗?

有了这个插件,你可以轻松地在撤销树中移动

  • 因此,只需返回到原始部分(如果是,则在
    附近),用
    ma
    标记它
  • 返回到树上的上一个状态(即使它撤消了其他更改)
  • 将要保留的区域复制(拖动)到寄存器中(例如,通过
  • 选择可视线-
    V5j)
    
  • 回到实际状态(Gundo树上的最后一项)
  • 跳回要更改的部分(
    'a
  • 已删除要还原的节,并将其替换为
    b
    register的内容

  • @Zsolt的回答可能非常有趣,我必须熟悉一下

    我通常做的是,做一些

    100g-(返回包含要恢复的内容的历史快照)

    使用某种方法猛拉“救援”文本,例如

    :12,17yank
    
    999g+(回到历史的尖端)


    使用常规编辑操作将拉伸的线恢复到位

    (实际上是“Zsolt”:-,但没关系。)谢谢你教我关于
    g-
    g+
    的知识。我其实想用Guno已经有一段时间了,但是我正在运行的服务器使用的是VIM 7.1,这需要7.3:实际上,我已经在一台大型服务器上将VIM编译到我的home dir中,该服务器不会很快从VIM 6.0升级;-)我尝试在没有root访问权限的情况下从src编译,并配置关于缺少“ncurses”的投诉(错误):L没有root我无法安装它:O