vim 分割窗口
From: http://buaadallas.blog.51cto.com/399160/83607
Vim用戶手冊(cè) - by Bram Moolenaar
? 譯者:Nek_in?
[url]http://vimcdoc.sf.net[/url]
? 分割窗口
顯示兩個(gè)不同的文件;或者同時(shí)顯示一個(gè)文件的兩個(gè)不同地方;又或者并排比較兩個(gè)文
件。這一切都可以通過(guò)分割窗口實(shí)現(xiàn)。
|08.1| 分割窗口
|08.2| 用另一個(gè)文件分割窗口
|08.3| 窗口大小
|08.4| 垂直分割
|08.5| 移動(dòng)窗口
|08.6| 對(duì)所有窗口執(zhí)行命令
|08.7| 用 vimdiff 顯示區(qū)別
|08.8| 雜項(xiàng)
? 下一章:|usr_09.txt| 使用 GUI 版本
? 前一章:|usr_07.txt| 編輯多個(gè)文件
? 目錄:|usr_toc.txt|
*08.1* 分割窗口
最簡(jiǎn)單的打開(kāi)新窗口命令是如下:
? :split
這個(gè)命令把屏幕分解成兩個(gè)窗口并把光標(biāo)置于上面的窗口中:
? +----------------------------------+
? |/* file one.c */ |
? |~ |
? |~ |
? |one.c=============================|
? |/* file one.c */ |
? |~ |
? |one.c=============================|
? | |
? +----------------------------------+
你可以看到顯示同一個(gè)文件的兩個(gè)窗口。帶 "====" 的行是狀態(tài)條,用來(lái)顯示它上面的窗
口的信息。(在實(shí)際的屏幕上,狀態(tài)條用反色顯示)
? 這兩個(gè)窗口允許你同時(shí)顯示一個(gè)文件的兩個(gè)部分。例如,你可以讓上面的窗口顯示
變量定義而下面的窗口顯示使用這些變量的代碼。
CTRL-W w 命令可以用于在窗口間跳轉(zhuǎn)。如果你在上面的窗口,它會(huì)跳轉(zhuǎn)到下面的窗口,
如果你在下面的窗口,它會(huì)跳轉(zhuǎn)到上面的窗口。(CTRL-W CTRL-W 可以完成相同的功能
這是為了避免你有時(shí)按第二次的時(shí)候從 CTRL 鍵上縮手晚了。)
關(guān) 閉 窗 口
以下命令用于關(guān)閉窗口:
? :close
實(shí)際上,任何退出編輯的命令都可以關(guān)閉窗口,象 ":quit" 和 "ZZ" 等。但 "close"
可以避免你在剩下一個(gè)窗口的時(shí)候不小心退出 Vim 了。
關(guān) 閉 所 有 其 它 窗 口
如果你已經(jīng)打開(kāi)了一整套窗口,但現(xiàn)在只想編輯其中一個(gè),如下命令可以完成這個(gè)功能:
? :only
這個(gè)命令關(guān)閉除當(dāng)前窗口外的所有窗口。如果要關(guān)閉的窗口中有一個(gè)沒(méi)有存盤,Vim 會(huì)
顯示一個(gè)錯(cuò)誤信息,并且那個(gè)窗口不會(huì)被關(guān)閉。
*08.2* 用另一個(gè)文件分割窗口
下面命令打開(kāi)另一個(gè)窗口并用該窗口編輯另一個(gè)指定的文件:
? :split two.c
如果你在編輯 one.c,則命令執(zhí)行的結(jié)果是:
? +----------------------------------+
? |/* file two.c */ |
? |~ |
? |~ |
? |two.c=============================|
? |/* file one.c */ |
? |~ |
? |one.c=============================|
? | |
? +----------------------------------+
要打開(kāi)窗口編輯一個(gè)新文件,可以使用如下命令:
? :new
你可以重復(fù)使用 ":split" 和 ":new" 命令建立任意多的窗口。
*08.3* 窗口大小
:split 命令可以接受個(gè)數(shù)前綴。如果指定了這個(gè)前綴,這個(gè)數(shù)將作為窗口的高度。例如
如下命令可以打開(kāi)一個(gè)三行的窗口并編輯文件 alpha.c:
? :3split alpha.c
對(duì)于已經(jīng)打開(kāi)的窗口,你可以用有幾種方法改變它的大小。如果你有鼠標(biāo),很簡(jiǎn)單:把
鼠標(biāo)指針移到分割兩個(gè)窗口的狀態(tài)欄上,上下拖動(dòng)即可。
要擴(kuò)大窗口:
? CTRL-W +
要縮小窗口:
? CTRL-W -
這兩個(gè)命令接受個(gè)數(shù)前綴用于指定擴(kuò)大和縮小的行數(shù)。所以 "4 CTRL-W +" 會(huì)使窗口增
高4行。
要把一個(gè)窗口設(shè)置為指定的高度,可以用這個(gè)命令:
? {height}CTRL-W _
就是先輸入一個(gè)數(shù)值,然后輸入 CTRL-W 和一個(gè)下劃線(在美式英語(yǔ)鍵盤中就是 Shift
加上 "-")。
? 要把一個(gè)窗口擴(kuò)展到盡可能大,可以使用無(wú)個(gè)數(shù)前綴的 CTRL-W _ 命令。
使 用 鼠 標(biāo)
在 Vim 中,你可以用鍵盤很快完成很多工作。但很不幸,改變窗口大小要敲不少鍵。在
這種情況下,使用鼠標(biāo)會(huì)更快一些。把鼠標(biāo)指針移到狀態(tài)條上,按住左鍵并拖動(dòng)。狀態(tài)
條會(huì)隨之移動(dòng),這會(huì)使一個(gè)窗口更大一個(gè)更小。
選 項(xiàng)
'winheight' 選項(xiàng)設(shè)置最小的期望窗口高度而 'winminheight' 選項(xiàng)設(shè)置最小的 "硬性"
高度。
? 同樣,'winwidth' 設(shè)置最小期望寬度而 'winminwidth' 設(shè)置為最小硬性寬度。
? 'equalalways' 選項(xiàng)使所有的窗口在關(guān)閉或者打開(kāi)新窗口的時(shí)候總保持相同大小。
*08.4* 垂直分割
":split"命令在當(dāng)前窗口的上面建立窗口。要在窗口左邊打開(kāi)新窗口,用這個(gè)命令:
? :vsplit
或者
? :vsplit two.c
這個(gè)命令的結(jié)果如下:
? +--------------------------------------+
? |/* file two.c */ |/* file one.c */ |
? |~ |~ |
? |~ |~ |
? |~ |~ |
? |two.c===============one.c=============|
? | |
? +--------------------------------------+
實(shí)際中,中間的豎線會(huì)以反色顯示。這稱為垂直分割線。它左右分割一個(gè)窗口。
還有一個(gè) "vnew" 命令,用于打開(kāi)一個(gè)垂直分割的新窗口。還有一種方法是:
? :vertical new
"vertical" 命令可以放在任何分割窗口的命令的前面。這會(huì)在分割窗口的時(shí)候用垂直
分割取代水平分割。(如果命令不分割窗口,這個(gè)前綴不起作用)。
在 窗 口 間 跳 轉(zhuǎn)
由于你可以用垂直分割和水平分割命令打開(kāi)任意多的窗口,你就能夠任意設(shè)置窗口的布局。
接著,你可以用下面的命令在窗口之間跳轉(zhuǎn):
? CTRL-W h 跳轉(zhuǎn)到左邊的窗口
? CTRL-W j 跳轉(zhuǎn)到下面的窗口
? CTRL-W k 跳轉(zhuǎn)到上面的窗口
? CTRL-W l 跳轉(zhuǎn)到右邊的窗口
? CTRL-W t 跳轉(zhuǎn)到最頂上的窗口
? CTRL-W b 跳轉(zhuǎn)到最底下的窗口
你可能已經(jīng)注意到這里使用移動(dòng)光標(biāo)一樣的命令用于跳轉(zhuǎn)窗口。如果你喜歡,改用方向
鍵也行。
? 還有其它命令可以跳轉(zhuǎn)到別的窗口,參見(jiàn):|Q_wi|。
*08.5* 移動(dòng)窗口
你已經(jīng)分割了一些窗口,但現(xiàn)在的位置不正確。這時(shí),你需要一個(gè)命令用于移動(dòng)窗口。
例如,你已經(jīng)打開(kāi)了三個(gè)窗口,象這樣:
? +----------------------------------+
? |/* file two.c */ |
? |~ |
? |~ |
? |two.c=============================|
? |/* file three.c */ |
? |~ |
? |~ |
? |three.c===========================|
? |/* file one.c */ |
? |~ |
? |one.c=============================|
? | |
? +----------------------------------+
顯然,最后一個(gè)窗口應(yīng)該在最上面。移動(dòng)到那個(gè)窗口 (用 CTRL-W w)并輸入如下命令:
? CTRL-W K
這里使用大寫(xiě)的 K。這樣窗口將被移到最上面。你可以注意到,這里有用 K 表示向上
移動(dòng)了。
? 如果你用的是垂直分割,CTRL-W K 會(huì)使當(dāng)前窗口移動(dòng)到上面并擴(kuò)展到整屏的寬度。
假設(shè)你的布局如下:
? +-------------------------------------------+
? |/* two.c */ |/* three.c */ |/* one.c */ |
? |~ |~ |~ |
? |~ |~ |~ |
? |~ |~ |~ |
? |~ |~ |~ |
? |~ |~ |~ |
? |two.c=========three.c=========one.c========|
? | |
? +-------------------------------------------+
當(dāng)你在中間的窗口(three.c)中使用 CTRL-W K 后,結(jié)果會(huì)是:
? +-------------------------------------------+
? |/* three.c */ |
? |~ |
? |~ |
? |three.c====================================|
? |/* two.c */ |/* one.c */ |
? |~ |~ |
? |two.c==================one.c===============|
? | |
? +-------------------------------------------+
還有三個(gè)相似的命令(估計(jì)你已經(jīng)猜出來(lái)了):
? CTRL-W H 把當(dāng)前窗口移到最左邊
? CTRL-W J 把當(dāng)前窗口移到最下邊
? CTRL-W L 把當(dāng)前窗口移到最右邊
*08.6* 對(duì)所有窗口執(zhí)行命令
你打開(kāi)了幾個(gè)窗口,現(xiàn)在你想退出 Vim,你可以分別關(guān)閉每一個(gè)窗口。更快的方法是:
? :qall
這表示 "quit all"(全部退出)。如果任何一個(gè)窗口沒(méi)有存盤,Vim 都不會(huì)退出。同時(shí)
光標(biāo)會(huì)自動(dòng)跳到那個(gè)窗口,你可以用 ":write" 命令保存該文件或者 ":quit!" 放棄修改。
如果你知道有窗口被改了,而你想全部保存,則執(zhí)行如下命令:
? :wall
這表示 "write all"(全部保存)。但實(shí)際上,它只會(huì)保存修改過(guò)的文件。Vim 知道保
存一個(gè)沒(méi)有修改過(guò)的文件是沒(méi)有意義的。
? 另外,還有 ":qall" 和 "wall" 的組合命令:
? :wqall
這會(huì)保存所有修改過(guò)的文件并退出 Vim 。
? 最后,下面的命令由于退出 Vim 并放棄所有修改:
? :qall!
注意,這個(gè)命令是不能撤消的。
為 所 有 的 參 數(shù) 打 開(kāi) 窗 口
要讓 Vim 為每個(gè)文件打開(kāi)一個(gè)窗口,可以使用 "-o" 參數(shù):
? vim -o one.txt two.txt three.txt
這個(gè)結(jié)果會(huì)是:
? +-------------------------------+
? |file one.txt |
? |~ |
? |one.txt========================|
? |file two.txt |
? |~ |
? |two.txt========================|
? |file three.txt |
? |~ |
? |three.txt======================|
? | |
? +-------------------------------+
"-o" 參數(shù)用于垂直分割窗口。
? 如果 Vim 已經(jīng)啟動(dòng)了,可以使用 ":all" 命令為參數(shù)列表中的每個(gè)文件打開(kāi)一個(gè)窗
口。":vertical all" 以垂直分割的方法打開(kāi)窗口。
*08.7* 用 vimdiff 顯示區(qū)別
有一種特殊的啟動(dòng) Vim 的方法可以用來(lái)顯示兩個(gè)文件的區(qū)別。讓我們打開(kāi)一個(gè) "main.c"
并插入一些字符。在設(shè)置了 'backup' 選項(xiàng)的情況下保存這個(gè)文件,以便產(chǎn)生 "main.c~"
備份文件。
? 在命令行中輸入如下命令:(不是在Vim中)
? vimdiff main.c~ main.c
Vim 會(huì)用垂直分割的方式打開(kāi)兩個(gè)文件。你只能看到你修改過(guò)的地方和上下幾行的地方。
? VV VV
? +-----------------------------------------+
? |+ +--123 lines: /* a|+ +--123 lines: /* a|
總結(jié)
- 上一篇: 终于找到你!如何将前端console.l
- 下一篇: Tomcat7/8开启WebDAV的支持