就在提交重大更改之前,我無意中在vim中從舊的和過時的交換文件中「恢復」了該文件。我的改變似乎沒有了。我試圖探索撤消樹,但仍然缺少大塊的變化。無論如何,我可以撤銷恢復行動,還是註定了?從vim中的交換文件中撤消恢復
回答
我剛剛嘗試過這個(啓用持久性撤消; Vim版本7.3.823)。舊的變化仍呈現(在:undolist
,但我通常使用像Gundo或Undotree對其進行可視化插件),但試圖恢復時,我得到
E438: u_undo: line numbers wrong
好像Vim可以不處理這種情況。請注意,您已被警告;恢復顯式地警告說:
Recovery completed. You should check if everything is OK.
E308: Warning: Original file may have been changed
我只是試圖用最新的Vim 7.4.140重現;那裏,我得到了'E310',舊的交換文件沒有被應用到更新的文件(這會阻止你的問題)。 –
我使用Undotree並啓用了持久性撤銷,並且可以使用部分歷史記錄,但是像您一樣,我遇到了「行號錯誤」錯誤;應用歷史編輯會導致源文件有點亂碼。 –
使用Undotree,您至少可以獲取變化之間的差異(顯示在底部窗口中),然後手動應用它們。不理想,但你可以期望的最好。 –
以下工作對我來說,恢復文件,並撤消歷史以及:
- 假設你有my_file,有一些持久撤消歷史+中未保存的更改。 my_file.swp
- 使用vim打開文件,然後按r獲取恢復版本
- 將恢復版本保存到臨時位置,例如:w/tmp /%
- 關閉時不保存(:q!)。再次打開文件,然後按d刪除交換文件
- 可選:compare/tmp/my_file和my_file以確保要恢復的版本
- 手動從/ tmp/my_file添加更改(例如ggdG和:r/tmp /%)
這可能很簡單,但這對我很有用。
PS:這不會爲您提供磁盤和恢復版本文件之間更改的撤消歷史記錄,該歷史記錄顯示爲歷史記錄中的一個大編輯。
太棒了!爲我工作,謝謝。 – Olexandr
比接受的答案更有用。只要你沒有將恢復的文件保存在原始文件中,那麼它絕對不會太晚! –
意外恢復文件後,您只需輸入:q!在不保存已恢復的更改的情況下退出vim - 這將使原始文件保持原樣並將交換文件保留在原來的位置。
你打開該文件的下一次,你會看到相同的提示 - 按d刪除交換文件,或中止和手動發現它(也可能刪除在同一位置的任何其他交換文件)
- 1. vim - 從vim恢復丟失的文件撤消文件
- 2. 撤消bzr恢復
- 3. 撤消--no-恢復中的R
- 4. 如何恢復/撤消TFS中未更改的文件?
- 5. 我可以從VIM交換文件中獲得版本化恢復嗎?
- 6. 撤消重做RichTextBox中使用撤消和恢復功能
- 7. 撤消jQuery或恢復DOM?
- 8. dropbox無法撤消事件以恢復文件
- 9. SVN - 通過VIM提交 - 恢復失敗提交消息
- 10. Vim撤銷:撤消文件寫入後的更改
- 11. 從Eclipse中恢復文件
- 12. 從文件中恢復postgresql
- 13. 如何從歷史提交中撤消文件刪除?
- 14. 撤消vim中的ESC鍵擊
- 15. Vim中的撤消關閉標籤
- 16. TRichEdit暫停/恢復撤消功能
- 17. 撤消並在數據庫恢復
- 18. 撤消恢復在git或tortoisegit
- 19. 在visual studio 2015中「撤消掛起的更改」後恢復文件(更改)
- 20. 從早先的git合併中恢復已恢復提交的文件
- 21. git:從提交恢復文件
- 22. 從提交恢復特定文件
- 23. Git:撤銷Aptana Studio中的本地文件恢復
- 24. 在Vim中跳過撤消步驟
- 25. 根據時間在Vim中撤消?
- 26. 只需撤消GIt的「提交」命令(不將文件恢復到之前的提交)
- 27. 撤消Git提交由於大文件
- 28. 截斷vim撤銷文件
- 29. Vim的:恢復IMAP
- 30. 如何在SQLAlchemy會話中恢復/撤消`session.execute()`語句
當您嘗試打開文件時會發生什麼?它是否說有交換文件? –
在我的系統上,我只是得到一個更多的代字號〜交換文件的每個交換文件.. open。你檢查了嗎?我的意思是應該有一個文件myfile.txt〜如果打開則會導致創建myfile.txt ~~ – matcheek
是的,交換文件仍然存在;只有一個交換文件。 –