一、技巧37用緩衝區清單管理打開的檔案
1.瞭解緩衝區和檔案的區別
1.1檔存儲在磁片上,緩衝區存在記憶體中
1.2打開文件時候,檔案內容會被讀入一個具有相同名字的緩衝區
1.3緩存區因為修改變動時,這會與檔案內容不一致
1.4决定保存緩存區內容後,修改內容會保存到檔案中
緩衝區:buffer
2.結識緩衝區清單
2.1 Vim可以同時在多個緩衝區工作
vim *.php
:ls //列出所有緩衝區
:bnext //切換到清單的下一個緩衝區,#標識輪換檔案,%指明哪一個緩衝區當前視窗中可見。
:ls
Ctrl+^可在所有的緩衝區中快速切換
3.使用緩衝區
4條命令遍歷緩衝區清單
:bprev //反向移動緩衝區,每次移動1項
:bnext //正向移動緩衝區,每次移動1項
:bfirst //跳到緩衝區清單的開頭
:blast //跳到緩衝區清單的結尾
4.删除緩衝區
:bdelete //删除緩衝區
:bdelete 1 2 3 //删除編號1,2,3的緩衝區
:2,5 bdelete //删除編號2,3,4,5緩衝區
二、技巧38用參數列表將緩衝區分組
vim *.php
:ls //列出所有緩衝區
:args //分組顯示[]標識當前活動的檔案
1.填充參數列表
:args {arglist} //{arglist}包括檔名、萬用字元,甚至是一條shell命令的輸出結果
2.用檔名指定檔案
:args config.php test0203.php
:args
工作量比較大,使用萬用字元比較快
3.用glob模式指定檔案
:args *.*
:args **/*.js
:args **/*.*
:args **/*.js **/*.css
4.用反引號結構指定檔案
:args `cat .php`
用cat命令獲取.php的檔案
5.使用參數列表
緩衝區清單就像整潔的獨立工作區
:argdo //在清單中每個緩衝區執行同一條命令
:next //正向遍歷參數列表的檔案
:prev //反向遍歷參數列表的檔案
三、技巧39管理隱藏緩衝區
緩衝區檔案前有個+,標識這個緩衝區被修改過
不保存先切換緩衝區
:bnext
會有一條報錯提示說當前緩衝區未保存修改
:bnext!
強制切換緩存區,原來的被標記為隱藏緩存區(hidden)
1.在退出時處理隱藏緩衝區
:quit //退出緩衝區
:write //緩衝區保存到檔案:w
:edit!//放弃修改,緩衝區不保存到檔案:e!
:qall!//不想檢查緩衝區直接退出:qa
:wall //保存所有的緩存區到檔案,且不需要檢查:wa
2.運行:*do命令前,啟用hidden設定
默認情况下,不會從一個改動過的緩衝區切換到其他緩存區
:next!
:bnext!
:cnext!
都會彈出錯誤資訊,提示已修改但未保存
四、技巧40將工作區切分成視窗
1.創建切分視窗
Ctrl+w+s
Ctrl+w+v
:sp 2 test.php //水准切分當前視窗,並在新窗口中打開test.php檔案
:vsp 2 test.php //垂直切分當前視窗,並在新窗口中打開test.php檔案
2.在視窗間切換
Ctrl+ww //在視窗間迴圈切換
Ctrl+wh //切換到左邊的視窗
Ctrl+wj //切換到下邊的視窗
Ctrl+wk //切換到上邊的視窗
Ctrl+wl //切換到右邊的視窗
3.關閉窗口
:close //關閉活動視窗:clo
:only //關閉除活動視窗外的所有視窗:on
4.改變視窗大小及重新排列視窗
Ctrl+w= //所有視窗等寬、等高
Ctrl+w_ //最大化活動視窗的高度
Ctrl+w| //最大化活動視窗的寬度
N+Ctrl+w_ //把活動視窗的高度設為N行
N+Ctrl+w| //把活動視窗的寬度設為N行
五、技巧41用標籤頁將視窗分組
1.如何使用標籤頁
:cld {path} //設定當前視窗的本地工作目錄
:windo lcd {path} //設定所有視窗的本地工作目錄
2.打開及關閉標籤頁
:close //關閉此視窗以及包含此視窗的標籤頁
:tabclose //關閉當前標籤頁,無論其中有多少個視窗:tabc
:tabonly //關閉當前標籤頁外的所有其他標籤頁:tabo
:tabedit {filename} //在新標籤頁打開文件:tabe
Ctrl+w+T //把當前視窗移到一個新標籤頁
3.在標籤頁中切換
123gt //跳到標籤頁123
123gT //跳轉方向與上一條相反
:tabnext 2,同123gt //切換到編號為2的標籤頁
:tabnext,同gt //切換到下一個標籤頁
:tabprevious,同gT //切換到上一個標籤頁
4.重排標籤頁
:tabmove N
當N為0時,當前標籤頁會被移到開頭
當N為空時,當前標籤頁會被移到結尾
當N為123時,當前標籤頁會被移到123標籤頁