Linux如何退出VI編輯器
:q 退出
:q! 強行退出(不存檔)
:wq 強制性寫入檔案並退出。即使檔案沒有被修改也強制寫入,並更新檔案的修改時間。
:x 寫入檔案並退出。僅當檔案被修改時才寫入,並更新檔案修改時間,否則不會更新檔案修改時間。
用ESC鍵只能切換到命令狀態
擴充知識:
今天我才知道":x"和":wq"的真正區別,如下:
:wq 強制性寫入檔案並退出。即使檔案沒有被修改也強制寫入,並更新檔案的修改時間。
:x 寫入檔案並退出。僅當檔案被修改時才寫入,並更新檔案修改時間,否則不會更新檔案修改時間。
這兩者一般情況下沒什麼不一樣,但是在編程方面,對編輯源檔案可能會產生重要影響。因為檔案即使沒有修改,":wq"強制更新檔案的修改時間,這樣會讓make編譯整個項目時以為檔案被修改過了,然後就得重新編譯連結產生可執行檔。這可能會產生讓人誤解的後果,當然也產生了不必要的系統資源花銷。
更加詳細內容:
在 linux 底下最常使用的文書編輯器為 vi ,請問如何進入編輯模式?
在一般模式底下輸入: i, I, a, A 為在本行當中輸入新字元;(出現 –Insert- )
在一般模式當中輸入: o, O 為在一個新的一行輸入新字元;
在一般模式當中輸入: r, R 為取代字元!(左下角出現 –Replace-)
如何由編輯模式跳回一般模式?
[Esc]
若上下左右鍵無法使用時,請問如何在一般模式移動游標?
h, j, k, l
若 [pagedown] [ pageup] 在一般模式無法使用時,如何往前或往後翻一頁?
[Ctrl] + [f]
[Ctrl] + [b]
如何到本檔案的最後一行、第一行;本行的第一個字元、最後一個字元?
G, 1G, 0, $
如何刪除一行、n行;如何刪除一個字元?
dd, ndd, x 或 X (dG 及 d1G 分別表示刪除到頁首及頁尾)
如何複製一行、n行並加以貼上?
yy, nyy, p 或 P
如何搜尋 string 這個字串?
?string (往前搜尋)
/string (往後搜尋)
如何取代 word1 成為 word2,而若需要使用者確認機制,又該如何?
:1,$s/word1/word2/g 或
:1,$s/word1/word2/gc (需要使用者確認)
如何讀取一個檔案 filename 進來目前這個檔案?
:r filename
如何另存新檔成為 newfilename?
:w newfilename
如何存檔、離開、存檔後離開、強制存檔後離開?
:w; :q: :wq; :wq!
如何設定與取消行號?
:set nu
:set nonu
參考推薦:
VIM編輯命令的技巧