Vim 指令( buffer 與 window )
Table of Contents
最近在看 Vim Videos - Posted by Derek Wyatt on 來學 Vim 的操作,這篇是我看完 Vim Novice Video Tutorials 章節中所做的筆記
一般游標移動的指令,我在 Vim 指令(游標移動) 這篇有紀錄過就不再贅述了
以下主要紀錄有關在 Vim 中操作 buffer 與 window 的指令
有任何錯誤或建議都歡迎告知:)
buffer ¶
buffer 簡單來說就是目前 Vim 所開啟的檔案的編輯區
當我們在用 Vim 開啟檔案時,Vim 會將檔案內容讀入 buffer 之中,我們平常就是在編輯 buffer 中的資料
最後存檔時,執行 w
,就是將 buffer 的內容寫回去檔案中
以下指令可以透過執行 :h buffer
查看說明文件
顯示與切換 buffer ¶
:ls
列出所有 buffer,:ls!
為連系統隱藏的 buffer 都列出來
:b [N]
切換到編號 [N]
的 buffer
:bn
切換到下一個 buffer,:bn!
為強制切換
:bN
切換到上一個 buffer,:bN!
為強制切換
:bf
切換到第一個 buffer,:bf!
為強制切換
:bl
切換到最後一個 buffer,:bl!
為強制切換
新增與刪除 buffer ¶
:badd [filename]
將 [filename]
加入 buffer 列表中
:bd [N]
、:bd [filename]
刪除編號為 [N]
或是檔名為 [filename]
的 buffer,:bd!
為強制刪除,若不帶任何參數則刪除目前正在編輯的 buffer
對所有 buffer 同時操作 ¶
:bufdo [cmd]
對所有 buffer 執行 [cmd]
指令,:bufdo! [cmd]
為強制執行
:wall
將所有 buffer 寫入變更(存檔),:wall!
為強制寫入
:qall
關閉所有 buffer,:qall!
為強制關閉
切換 buffer 時可能會遇到的問題 ¶
一般如果從未存檔的 buffer 切換到另一個 buffer 時,會出現以下訊息
E37: No write since last change (add ! to override)
這是提醒你要儲存變更,以免遺失 buffer 中的資料,你在指令後方加上 !
強制切換
你也可以執行 :set hidden
或在 ~/.vimrc
中設置這個設定,將非顯示的 buffer 隱藏起來
這樣就不會再跳出提醒,順利切換了
window ¶
可以在畫面中切出許多編輯視窗,用來查看、比對不同檔案,不用為開多個終端機(Terminal)排列傷腦筋
以下指令可以透過執行 :h window
查看說明文件
新增分割視窗 ¶
:sp [filename]
往上新增水平分割視窗,如未輸入 [filename]
,新視窗的內容跟原視窗相同
Ctrl+w s
往上新增水平分割視窗,新視窗的內容跟原視窗相同
:vs [filename]
往左新增垂直分割視窗,如未輸入 [filename]
,新視窗的內容跟原視窗相同
Ctrl+w v
往左新增垂直分割視窗,新視窗的內容跟原視窗相同
:new
新增空檔案的新水平分割視窗(往上新增)
:vnew
新增空檔案的新垂直分割視窗(往左新增)
在視窗之間移動 ¶
Ctrl+w h
游標移動到左方視窗
Ctrl+w j
游標移動到下方視窗
Ctrl+w k
游標移動到上方視窗
Ctrl+w l
游標移動到右方視窗
Ctrl+w w
游標移動到下一個視窗
:close
或 Ctrl+w c
關閉目前視窗
移動視窗位置 ¶
Ctrl+w H
將目前視窗移到左方
Ctrl+w J
將目前視窗移到下方
Ctrl+w K
將目前視窗移到上方
Ctrl+w L
將目前視窗移到右方
Ctrl+w x
與下一個視窗互換位置
Ctrl+w Ctrl+r
輪轉視窗,每個視窗往下一個位置移動,最後的視窗會到第一個位置
其他 ¶
Ctrl+w o
畫面只保留目前視窗,關閉其他視窗。如果有設定 :set hidden
,則其他視窗會隱藏起來
window 與 buffer 的操作 ¶
:sb [N]
新增視窗,新視窗的內容為 buffer 編號 [N]
:sbn
新增視窗,新視窗的內容為下一個 buffer
:sball
將所有 buffer 的內容變為視窗顯示在畫面上
以上指令的結果都是水平分割,視窗上下排列,若要垂直分割的話,可以在指令前面加上 :vert
例如 :vert ball
就是將所有 buffer 的內容變為垂直分割視窗,左右排列顯示在畫面上
參考 ¶
Vim Videos - Posted by Derek Wyatt on