vim分割視窗命令 顯示兩個不同的檔案;或者同時顯示一個檔案的兩個不同地方;又或者並排比較兩個檔案。這一切都可以通過分割視窗實現。|08.1| 分割視窗|08.2| 用另一個檔案分割視窗|08.3| 視窗大小|08.4| 垂直分割|08.5| 移動視窗|08.6| 對所有視窗執行命令|08.7| 用 vimdiff 顯示區別|08.8| 雜項 下一章:|usr_09.txt| 使用 GUI 版本 前一章:|usr_07.txt| 編輯多個檔案 目錄:|usr_toc.txt|*08.1* 分割視窗最簡單的開啟新視窗命令是如下: :split這個命令把螢幕分解成兩個視窗並把游標置於上面的視窗中: +----------------------------------+ |/* file one.c */ | |~ | |~ | |one.c=============================| |/* file one.c */ | |~ | |one.c=============================| | | +----------------------------------+你可以看到顯示同一個檔案的兩個視窗。帶 "====" 的行是狀態條,用來顯示它上面的視窗的資訊。(在實際的螢幕上,狀態條用反色顯示) 這兩個視窗允許你同時顯示一個檔案的兩個部分。例如,你可以讓上面的視窗顯示變數定義而下面的視窗顯示使用這些變數的代碼。CTRL-W w 命令可以用於在視窗間跳轉。如果你在上面的視窗,它會跳轉到下面的視窗,如果你在下面的視窗,它會跳轉到上面的視窗。(CTRL-W CTRL-W 可以完成相同的功能這是為了避免你有時按第二次的時候從 CTRL 鍵上縮手晚了。)關 閉 窗 口以下命令用於關閉視窗: :close實際上,任何退出編輯的命令都可以關閉視窗,象 ":quit" 和 "ZZ" 等。但 "close"可以避免你在剩下一個視窗的時候不小心退出 Vim 了。關 閉 所 有 其 它 窗 口如果你已經開啟了一整套視窗,但現在只想編輯其中一個,如下命令可以完成這個功能: :only這個命令關閉除當前視窗外的所有視窗。如果要關閉的視窗中有一個沒有存檔,Vim 會顯示一個錯誤資訊,並且那個視窗不會被關閉。*08.2* 用另一個檔案分割視窗下面命令開啟另一個視窗並用該視窗編輯另一個指定的檔案: :split two.c如果你在編輯 one.c,則命令執行的結果是: +----------------------------------+ |/* file two.c */ | |~ | |~ | |two.c=============================| |/* file one.c */ | |~ | |one.c=============================| | | +----------------------------------+要開啟視窗編輯一個新檔案,可以使用如下命令: :new你可以重複使用 ":split" 和 ":new" 命令建立任意多的視窗。*08.3* 視窗大小:split 命令可以接受個數首碼。如果指定了這個首碼,這個數將作為視窗的高度。例如如下命令可以開啟一個三行的視窗並編輯檔案 alpha.c: :3split alpha.c對於已經開啟的視窗,你可以用有幾種方法改變它的大小。如果你有滑鼠,很簡單:把滑鼠指標移到分割兩個視窗的狀態列上,上下拖動即可。要擴大視窗: CTRL-W +要縮小視窗: CTRL-W -這兩個命令接受個數首碼用於指定擴大和縮小的行數。所以 "4 CTRL-W +" 會使視窗增高4行。要把一個視窗設定為指定的高度,可以用這個命令: {height}CTRL-W _就是先輸入一個數值,然後輸入 CTRL-W 和一個底線(在美式英語鍵盤中就是 Shift加上 "-")。 要把一個視窗擴充到儘可能大,可以使用無個數首碼的 CTRL-W _ 命令。使 用 鼠 標在 Vim 中,你可以用鍵盤很快完成很多工作。但很不幸,改變視窗大小要敲不少鍵。在這種情況下,使用滑鼠會更快一些。把滑鼠指標移到狀態條上,按住左鍵並拖動。狀態條會隨之移動,這會使一個視窗更大一個更小。選 項'winheight' 選項設定最小的期望視窗高度而 'winminheight' 選項設定最小的 "硬性"高度。 同樣,'winwidth' 設定最小期望寬度而 'winminwidth' 設定為最小硬性寬度。 'equalalways' 選項使所有的視窗在關閉或者開啟新視窗的時候總保持相同大小。*08.4* 垂直分割":split"命令在當前視窗的上面建立視窗。要在視窗左邊開啟新視窗,用這個命令: :vsplit或者 :vsplit two.c這個命令的結果如下: +--------------------------------------+ |/* file two.c */ |/* file one.c */ | |~ |~ | |~ |~ | |~ |~ | |two.c===============one.c=============| | | +--------------------------------------+實際中,中間的豎線會以反色顯示。這稱為垂直分割線。它左右分割一個視窗。還有一個 "vnew" 命令,用於開啟一個垂直分割的新視窗。還有一種方法是: :vertical new"vertical" 命令可以放在任何分割視窗的命令的前面。這會在分割視窗的時候用垂直分割取代水平分割。(如果命令不分割視窗,這個首碼不起作用)。在 窗 口 間 跳 轉由於你可以用垂直分割和水平分割命令開啟任意多的視窗,你就能夠任意設定視窗的布局。接著,你可以用下面的命令在視窗之間跳轉: CTRL-W h 跳轉到左邊的視窗 CTRL-W j 跳轉到下面的視窗 CTRL-W k 跳轉到上面的視窗 CTRL-W l 跳轉到右邊的視窗 CTRL-W t 跳轉到最頂上的視窗 CTRL-W b 跳轉到最底下的視窗你可能已經注意到這裡使用移動游標一樣的命令用於跳轉視窗。如果你喜歡,改用方向鍵也行。*08.5* 移動視窗你已經分割了一些視窗,但現在的位置不正確。這時,你需要一個命令用於移動視窗。例如,你已經開啟了三個視窗,象這樣: +----------------------------------+ |/* file two.c */ | |~ | |~ | |two.c=============================| |/* file three.c */ | |~ | |~ | |three.c===========================| |/* file one.c */ | |~ | |one.c=============================| | | +----------------------------------+顯然,最後一個視窗應該在最上面。移動到那個視窗 (用 CTRL-W w)並輸入如下命令: CTRL-W K這裡使用大寫的 K。這樣視窗將被移到最上面。你可以注意到,這裡有用 K 表示向上移動了。 如果你用的是垂直分割,CTRL-W K 會使當前視窗移動到上面並擴充到整屏的寬度。假設你的布局如下: +-------------------------------------------+ |/* two.c */ |/* three.c */ |/* one.c */ | |~ |~ |~ | |~ |~ |~ | |~ |~ |~ | |~ |~ |~ | |~ |~ |~ | |two.c=========three.c=========one.c========| | | +-------------------------------------------+當你在中間的視窗(three.c)中使用 CTRL-W K 後,結果會是: +-------------------------------------------+ |/* three.c */ | |~ | |~ | |three.c====================================| |/* two.c */ |/* one.c */ | |~ |~ | |two.c==================one.c===============| | | +-------------------------------------------+還有三個相似的命令(估計你已經猜出來了): CTRL-W H 把當前視窗移到最左邊 CTRL-W J 把當前視窗移到最下邊 CTRL-W L 把當前視窗移到最右邊*08.6* 對所有視窗執行命令你開啟了幾個視窗,現在你想退出 Vim,你可以分別關閉每一個視窗。更快的方法是: :qall這表示 "quit all"(全部退出)。如果任何一個視窗沒有存檔,Vim 都不會退出。同時游標會自動跳到那個視窗,你可以用 ":write" 命令儲存該檔案或者 ":quit!" 放棄修改。如果你知道有視窗被改了,而你想全部儲存,則執行如下命令: :wall這表示 "write all"(全部儲存)。但實際上,它只會儲存修改過的檔案。Vim 知道儲存一個沒有修改過的檔案是沒有意義的。 另外,還有 ":qall" 和 "wall" 的組合命令: :wqall這會儲存所有修改過的檔案並退出 Vim 。 最後,下面的命令由於退出 Vim 並放棄所有修改: :qall!注意,這個命令是不能撤消的。為 所 有 的 參 數 打 開 窗 口要讓 Vim 為每個檔案開啟一個視窗,可以使用 "-o" 參數: vim -o one.txt two.txt three.txt這個結果會是: +-------------------------------+ |file one.txt | |~ | |one.txt========================| |file two.txt | |~ | |two.txt========================| |file three.txt | |~ | |three.txt======================| | | +-------------------------------+"-o" 參數用於垂直分割視窗。 如果 Vim 已經啟動了,可以使用 ":all" 命令為參數列表中的每個檔案開啟一個視窗。":vertical all" 以垂直分割的方法開啟視窗。*08.7* 用 vimdiff 顯示區別有一種特殊的啟動 Vim 的方法可以用來顯示兩個檔案的區別。讓我們開啟一個 "main.c"並插入一些字元。在設定了 'backup' 選項的情況下儲存這個檔案,以便產生 "main.c~"備份檔案。 在命令列中輸入如下命令:(不是在Vim中) vimdiff main.c~ main.cVim 會用垂直分割的方式開啟兩個檔案。你只能看到你修改過的地方和上下幾行的地方。 VV VV +-----------------------------------------+ |+ +--123 lines: /* a|+ +--123 lines: /* a|