Vim 如何在重做中跳过命令

Vim 如何在重做中跳过命令,vim,Vim,如何使用重做(ctrl-R)跳过命令?我犯了一个错误,把我的文件放在了小写字母中,我可以返回并撤消该命令,之后如何重做所有其他命令?我认为没有简单的方法可以做到这一点。我假设更改非常复杂,您可能已经花了一些时间来检查它们,否则您可以再次键入它们。您可以尝试以下选项: 开始录制宏(:help q),键入更改,停止录制,然后将整个文本更改为小写(gggUG)。然后您可以将其与以前的版本进行比较(windo difft)——它将提醒您缺少任何更改,并且您可以节省检查更改的每个细节的时间 使用默认vi

如何使用重做(ctrl-R)跳过命令?我犯了一个错误,把我的文件放在了小写字母中,我可以返回并撤消该命令,之后如何重做所有其他命令?

我认为没有简单的方法可以做到这一点。我假设更改非常复杂,您可能已经花了一些时间来检查它们,否则您可以再次键入它们。您可以尝试以下选项:

  • 开始录制宏(
    :help q
    ),键入更改,停止录制,然后将整个文本更改为小写(
    gggUG
    )。然后您可以将其与以前的版本进行比较(
    windo difft
    )——它将提醒您缺少任何更改,并且您可以节省检查更改的每个细节的时间
  • 使用默认vimrc(
    $VIMRUNTIME/vimrc_example.vim
    )上定义并在帮助文件中解释的
    :DiffOrig
    ,将最终文本与更改为小写之前的版本进行比较,您可以了解是否更容易重复更改或修复文本的大小写

编辑:

:DiffOrig
将帮助您完成您在评论中解释的内容


还请注意,可能可以编辑并应用撤消历史记录,但实现起来可能比手动重做更改更复杂。如果这是您的工作流中常见的东西,那么它可能是值得的——在这种情况下,您可以基于此主题的一些现有插件并将其包括在内,例如。

Vim的undo-redo功能非常强大,不仅支持一个线性序列,而且支持完整的树(cp.
:help undo Branchs
)。不幸的是,您所要求的仍然是不可能的,因为Vim相对其他命令存储每个命令(及其效果);跳过任何操作都会对整个撤消历史造成严重破坏


要实现类似的效果,需要在宏中预先记录步骤(如@mMontu所建议的);然后可以撤消、编辑和重新执行寄存器中的宏命令。

感谢您的帮助,我在谷歌上搜索不到任何成功,我将以出错时的状态保存文件,并将其与上次编辑进行比较,太糟糕了,在播放其余部分之前,无法编辑历史记录并删除错误。欢迎您。我在答案中加入了一些信息。