vim 分割窗口
From: http://buaadallas.blog.51cto.com/399160/83607
Vim用戶手冊 - by Bram Moolenaar
? 譯者:Nek_in?
[url]http://vimcdoc.sf.net[/url]
? 分割窗口
顯示兩個不同的文件;或者同時顯示一個文件的兩個不同地方;又或者并排比較兩個文
件。這一切都可以通過分割窗口實現。
|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 跳轉到最底下的窗口
你可能已經注意到這里使用移動光標一樣的命令用于跳轉窗口。如果你喜歡,改用方向
鍵也行。
? 還有其它命令可以跳轉到別的窗口,參見:|Q_wi|。
*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.c
Vim 會用垂直分割的方式打開兩個文件。你只能看到你修改過的地方和上下幾行的地方。
? VV VV
? +-----------------------------------------+
? |+ +--123 lines: /* a|+ +--123 lines: /* a|
總結
- 上一篇: 终于找到你!如何将前端console.l
- 下一篇: Tomcat7/8开启WebDAV的支持