2015-06-08 71 views
3

如何使用重做(ctrl-R)跳過命令?我犯了一個錯誤,並把我的文件放在小寫字母中,我可以返回並撤消命令,我怎樣才能重做所有其他命令?如何在重做中跳過命令

回答

3

我認爲沒有簡單的方法來做到這一點。我認爲這些變化相當複雜,你可能花了一些時間審查它們,否則你可以再次輸入它們。你可以嘗試以下選項:

  • 開始錄製宏(:help q),類型的變化停止錄製,然後改變整個文本爲小寫(gggUG)。然後您可以根據您以前的版本(windo difft)進行區分 - 它會提醒您缺少任何更改,並節省檢查更改的每個細節的時間
  • 使用:DiffOrig,它在默認vimrc上定義($VIMRUNTIME/vimrc_example.vim )並在幫助文件中進行了解釋,爲了在更改爲小寫之前將最終文本與版本進行比較,可以瞭解重複更改還是修復文本的情況。

編輯:

:DiffOrig會幫助你做你的評論解釋了。

另請注意,可能可以編輯它們並應用撤消歷史記錄,但實現起來可能比手動重做您的更改更復雜。如果這是您的工作流程中常見的東西,那麼這可能是值得的 - 在這種情況下,您可以將其包含在某個現有插件上,如undotree

+0

感謝您的幫助,我在搜索時沒有成功,我將該文件保存在錯誤發生時的狀態,並將其與最後一次編輯進行比較,太糟糕了,無法編輯歷史記錄,在休息之前刪除錯誤。 – Penbeuz

+0

不客氣。我在答案中包含了一些信息。 – mMontu

0

Vim的undo-redo功能非常強大,不僅支持一個線性序列,而且支持一棵完整樹(cp。:help undo-branches)。不幸的是,你所要求的仍然是不可能的,因爲Vim存儲每個命令(及其效果)相對於其他命令;跳過任何會對整個撤消歷史造成嚴重破壞。

要實現這樣的事情,您需要預先記錄宏中的步驟(如@ mMontu所示);寄存器內的宏命令可以被撤消,編輯和重新執行。