如何使用重做(ctrl-R)跳过命令诡计?我犯了一个错误并将我的文件放在小写中,我可以返回并撤消命令,我怎样才能重做之后完成的所有其他命令?
答案 0 :(得分:3)
我认为没有简单的方法可以做到这一点。我认为这些变化非常复杂,你可能花了一些时间来审查它们,否则你可以再次输入它们。您可以尝试以下选项:
:help q
),键入更改,停止录制,然后将整个文本更改为小写(gggUG
)。然后你可以将它与你以前的版本(windo difft
)区分开来 - 它会提醒你任何缺失的变化,并节省检查变更的每个细节的时间:DiffOrig
,它在默认的vimrc($VIMRUNTIME/vimrc_example.vim
)上定义并在帮助文件中进行了解释,以便在更改为小写之前将最终文本与版本进行比较,您可以了解它是否正确更容易重复更改或修复文本的大小写。编辑:
:DiffOrig
可以帮助您完成您在评论中解释的内容。
另请注意,可能可以编辑并应用撤消历史记录,但实现起来可能比手动重做更改更复杂。如果这是您的工作流程中常见的事情,那么可能是值得的 - 在这种情况下,您可以将其包含在主题的某些现有插件上,例如undotree。
答案 1 :(得分:0)
Vim的undo-redo功能非常强大,不仅支持一个线性序列,还支持一个完整的树(cp。:help undo-branches
)。不幸的是,你要求的仍然是不可能的,因为Vim存储每个命令(及其效果)相对于其他命令;跳过任何会对整个撤消历史造成严重破坏。
要实现这样的目标,您需要预先记录宏中的步骤(如@mMontu所示);然后可以撤消,编辑和重新执行寄存器中的宏命令。