因為編輯時錯刪字串,若要回頭查哪裡改錯時間花費會比較於,重新載入原檔
但我google後只查到":e!"這個指令,但執行後沒有復原;所以想請問,哪個指令能
夠重新復原會原始的文字檔案,謝謝
指令沒有錯, 但是你有先回到 vi 的 command mode 再下這個指令嗎?
vi 操作時有兩種 mode: insert mode 和 command mode, 你在裡面如果可以打字r就是 insert mode, 但上面的指令不能在 insert mode 執行, 你必須先按 <ESC> 鍵離開 insert mode, 回到 command mode 之後, 才可以下 :e! 指令.
此外, 如果編輯途中, 曾經按過 <ESC>:w 的話, 那內容已經回寫到檔案裡面去了, 你再用 :e! 也只能載回最後一次存檔的內容, 不會是原始開擋的內容.
你好,請問若檔案已改得很亂,想回到該檔案原始的內文,就是用:e!(指令列模式)來使它復原嗎?
請教我輸入:e!之後出現這畫面,該如何下一步呢?
上面這張畫面, 代表你多開了一個 vi, 也就是有兩個 vi 想要同時編輯同一個檔案.
你是否沒有正常結束掉前一個 vi, 然後又執行了第二個 vi, 去編輯同一個檔案? 你可以試著刪掉上面那個 ~/.aMule/.amule.conf.swp 檔案之後, 再重新進入 vi.
raytracy你好,
請問如圖說明":e!"的用法
是只恢復"當下"修改前的狀態,還是直接回到最原始的檔案?
genbo提到:
是只恢復"當下"修改前的狀態,還是直接回到最原始的檔案?
你要先定義清楚甚麼叫「最原始的檔案」?
假設你的動作是這樣:
vi 原始檔案 > 修改1... > 存檔1 > 修改2... > 存檔2 > 修改3... > 存檔3 > 修改4....
然後你在這個時候按下 :e! 的話, 他只能讓你回到存檔 3 那時候的狀態, 不可能讓你回到最前面那個 vi 剛開始的狀態. 因為你中間的「存檔」動作, 已經將他覆蓋掉而且寫進磁碟了, 在磁碟上被蓋掉的東西, vi 沒有辦法可以恢復到以前的狀態. (應該說一般軟體都沒有辦法這樣做)
所以, 重點是你中間有沒有做過存檔的動作? 若有的話, 那就是只能回到最後一次存檔的內容.
genbo提到:
但執行後沒有復原
你前面提到這個現象, 我認為應該不是沒有恢復, 而是你在編輯中途曾經按過存檔指令, 使得 disk 檔案已經被寫入覆蓋成最新的內容, 所以 :e! 也只能撈回這個內容, 跟你螢幕上的相同, 所以你以為沒有復原.
其實是已經復原成 disk 的內容了, 只是那個內容已經被覆蓋成跟你現在螢幕上的相同罷了.