亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

VIM 分割窗口

2024-06-28 13:28:49
字體:
來源:轉載
供稿:網友
VIM 分割窗口

VIM 分割窗口

*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| <- 折疊

| text | text |

| text | text |

| text | text |

| text | changed text | <- 修改過的行

| text | text |

| text | ------------------| <- 刪除的行

| text | text |

| text | text |

| text | text |

|+ +--432 lines: text|+ +--432 lines: text| <- 折疊

| ~ | ~ |

| ~ | ~ |

|main.c~==============main.c==============|

| |

+-----------------------------------------+

(這幅圖沒有顯示出高亮效果,可以使用 vimdiff 命令看到更好的效果)

那些沒有修改的行會被折疊成一行,這稱為 "關閉的折疊" (closed fold)。上圖中

由 "<- 折疊" 標記的行就是一個用一行表示 123 行的折疊。這些行在兩個文件中完全相

同。

標記為 "<- 修改過的行" 被高亮顯示,而增加的行被用另一種顏色表示。這可以很

清楚地表示出兩個文件間的不同。

被刪除的行在 main.c 窗口中用 "---" 顯示,如圖中用 "<- 刪除的行" 標記的行。

這些字符并不是真的存在。它們只是用于填充 main.c,以便與另一個窗口對齊。

折 疊 欄

每個窗口在左邊都有一個顏色略有不同的顯示欄,圖中標識為 "VV"。你會發現每個折疊

在那個位置都有一個加號。把鼠標移到那里并按左鍵可以打開那個折起,從而讓你看到里

面的內容。

對于打開的折疊,折疊欄上會出現一個減號。如果你單擊那個減號,折疊會被重新關

閉。

當然,這只能在你有鼠標的情況下使用。如果你沒有,可以用 "zo" 打開一個折疊。

關閉使用 "zc"。

用 Vim 做 比 較

啟動比較模式的另一種方法從 Vim 內部開始:編輯 "main.c" 文件,然后分割窗口顯示

區別:

:edit main.c

:vertical diffsplit main.c

":vertical" 命令使窗口用垂直的方式分割。如果你不寫這個命令,結果會變成水平分

割。

如果你有一個當前文件的補丁或者 diff 文件,你可以用第三種方法啟動比較模式:先編

輯這個文件,然后告訴 Vim 補丁文件的名稱:

:edit main.c

:vertical diffpatch main.c diff

警告:補丁文件中必須僅包括為一個目標文件所做的補丁,否則你可能會得到一大堆錯誤

信息。還可能有些你沒打算打補丁的文件也被打了補丁。

補丁功能只改變內存中的文件備份,不會修改你硬盤上的文件 (除非你決定寫入改

動)。

滾 動 綁 定

當文件中有很多改動時,你可以用通常的方式滾動屏幕。Vim 會盡可能保持兩個文件對

齊,以便你可以并排看到文件的區別。

如果暫時想關閉這個特性,使用如下命令:

:set noscrollbind

跳 轉 到 修 改 的 地 方

如果你通過某種方法取消了折疊功能,可能很難找到有改動的地方。使用如下命令可以跳

轉到下一個修改點:

]c

反向跳轉為:

[c

加上一個計數前綴可以跳得更遠。

消 除 差 異

你可以把文本從一個窗口移到另一個,并以此來消除差異,或者為其中一個文件中增加幾

行。Vim 有時可能無法及時更新高亮顯示。要修正這種問題,使用如下命令:

:diffupdate

要消除差異,你可以把一個高亮顯示的塊從一個窗口移動到另一個窗口。以上面的

"main.c" 和 "main.c~" 為例,把光標移到左邊的窗口,在另一個窗口中被刪除的行的位

置,執行如下命令:

:dp

這將把文字從左邊拷到右邊,從而消除兩邊的差異。"dp" 代表 "diff put"。

你也可以反過來做:把光標移到右邊的窗口,移到被 "改動" 了的行上,然后執行

如下命令:

:do

這把文本從左邊拷到右邊,從而消除差異。

由于兩個文件已經沒有區別了,Vim 會把所有文字全部折疊起來。"do" 代表 "diff

obtain"。本來用 "dg" (diff get) 會更好??墒撬呀浻辛硗獾囊馑剂?("dgg" 刪除從

光標為止到首行的所有文本)。

要了解更多的比較模式的內容,參見 |vimdiff|。


*08.8* 雜項

'laststatus' 選項用于指定什么時候對最后一個窗口顯示狀態條:

0 永遠不

1 只有用分割窗口的時候 (默認)

2 永遠有

很多編輯另一個文件的命令都有一個使用分割窗口的變體。對于命令行命令,這通過前置

一個 "s" 實現。例如 ":tag" 用來跳到一個標記,"stag" 就會分割出一個新窗口并跳到

那個標記。

對于普通模式,前置一個 CTRL-W 可以完成這個功能。例如,CTRL-^ 跳到輪換文

件,而 CTRL-W CTRL-^ 打開一個新窗口并編輯輪換文件。

'splitbelow' 選項可以讓新的窗口出現在當前窗口的下面。'splitright' 選項讓垂直分

割的窗口出現在當前窗口的右邊。

打開一個新窗口時可以在命令前加上一個修飾符說明新窗口應該出現在什么地方:

:leftabove {cmd} 當前窗口的左上方

:aboveleft {cmd} 同上

:rightbelow {cmd} 當前窗口的右下方

:belowright {cmd} 同上

:topleft {cmd} 整個 Vim 窗口的最上面或者最左邊

:botright {cmd} 整個 Vim 窗口的最下面或者最右邊


*08.9* 標簽頁

你會注意到窗口永遠不會重疊。這意味著屏幕空間很快會用完。這個問題的解決方法叫做

標簽頁。

假設你正在編輯文件 "thisfile"。下面的命令可以建立新的標簽頁:

:tabedit thatfile

這會在一個窗口中編輯文件 "thatfile",這個窗口會占滿整個 Vim 窗口。你會注意到在

頂部有一個含有兩個文件名的橫條:

+----------------------------------+

| thisfile | /thatfile/ __________X| (thatfile 用加粗字體出現)

|/* thatfile */ |

|that |

|that |

|~ |

|~ |

|~ |

| |

+----------------------------------+

現在,你擁有了兩個標簽頁。第一個是文件 "thisfile" 的窗口,第二個是文件

"thatfile" 的窗口。這就像是兩張重疊的紙,它們所帶的的標簽露在外面,顯示其文件

名。

現在,使用鼠標單擊頂端的 "thisfile"。結果是

+----------------------------------+

| /thisfile/ | thatfile __________X| (thisfile 用加粗字體出現)

|/* thisfile */ |

|this |

|this |

|~ |

|~ |

|~ |

| |

+----------------------------------+

你可以通過單擊頂端的標簽切換標簽頁。如果沒有鼠標或者不想用它,可以使用 "gt" 命

令。助記符:Goto Tab。

現在,讓我們通過下面的命令建立另一個標簽頁:

:tab split

這會建立一個新的標簽頁,包含一個窗口,編輯和剛才所在窗口中的緩沖區相同的緩沖

區:

+-------------------------------------+

| thisfile | /thisfile/ | thatfile __X| (thisfile 用加粗字體出現)

|/* thisfile */ |

|this |

|this |

|~ |

|~ |

|~ |

| |

+-------------------------------------+

在任何打開窗口的 Ex 命令前面,你都可以放上 ":tab"。這個窗口在新標簽頁中打開。

另一個例子:

:tab help gt

它將在新的標簽頁中顯示關于 "gt" 的幫助。

使用標簽頁可以完成更多的工作:

- 在末尾標簽后面的空白處單擊鼠標

選擇下個標簽頁,同 "gt"。

- 在右上角的 "X" 處單擊鼠標

關閉當前標簽頁,除非當前標簽頁中的改變沒有保存。

- 在標簽行上雙擊鼠標

建立新標簽頁。

- "tabonly" 命令

關閉除了當前標簽頁以外的所有標簽頁,除非其它標簽頁中的改變沒有保存。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲jizzjizz日本少妇| 狠狠色噜噜狠狠狠狠97| 久久久视频精品| 欧美电影免费观看高清完整| 欧美另类暴力丝袜| 欧美激情精品久久久久久变态| 欧美激情欧美激情| 中文字幕亚洲欧美在线| 欧美电影免费观看大全| 中文字幕在线国产精品| 亚洲欧美国产视频| 国内外成人免费激情在线视频网站| 欧美老女人xx| 欧美精品第一页在线播放| 亚洲丁香久久久| 亚洲国产精品99| 欧美日韩加勒比精品一区| 亚洲成人在线网| 最新91在线视频| 91美女高潮出水| 国产精品视频播放| 91精品国产一区| 国产美女精彩久久| 免费不卡在线观看av| 亚洲女同精品视频| 国产精品综合网站| 久久婷婷国产麻豆91天堂| 亚洲欧洲日本专区| 国产亚洲福利一区| 动漫精品一区二区| 精品美女永久免费视频| 欧美另类老女人| 欧美猛少妇色xxxxx| 欧美精品亚州精品| 日本成人在线视频网址| 欧美日韩国产激情| 亚洲男人天堂古典| 亚洲精品综合久久中文字幕| 国产精品自拍网| 中文字幕免费国产精品| 色综合伊人色综合网| 精品视频久久久久久久| 国产精品www色诱视频| 中文字幕欧美精品在线| 91九色在线视频| 亚洲精品久久视频| 久久av资源网站| 亚洲一品av免费观看| 久久久精品日本| 日本免费在线精品| 成人h猎奇视频网站| 国产一区二区三区在线观看网站| 大胆人体色综合| 久久亚洲影音av资源网| 亚洲国产精品va在看黑人| 亚洲欧美第一页| 国产精品欧美激情| 国产精品精品久久久| 伊人久久久久久久久久久久久| 久久久久国产精品免费| 国产成人精品电影久久久| 啊v视频在线一区二区三区| 国产午夜精品全部视频在线播放| 国产日韩综合一区二区性色av| 狠狠色噜噜狠狠狠狠97| 欧美成人中文字幕在线| 永久免费看mv网站入口亚洲| 国产欧美日韩亚洲精品| 国产亚洲福利一区| 自拍视频国产精品| 欧美性极品xxxx做受| 精品福利免费观看| 国产精品第一页在线| 色琪琪综合男人的天堂aⅴ视频| 欧美性生交xxxxxdddd| 欧美成人午夜影院| 亚洲国产精彩中文乱码av在线播放| 日本欧美精品在线| 亚洲精品视频中文字幕| 亚洲综合在线小说| 欧美华人在线视频| 亚洲国产私拍精品国模在线观看| 久久理论片午夜琪琪电影网| 国模吧一区二区三区| 亚洲欧美国产日韩中文字幕| 高清日韩电视剧大全免费播放在线观看| 欧美国产在线视频| 亚洲天堂成人在线视频| 精品欧美国产一区二区三区| 亚洲精品v欧美精品v日韩精品| y97精品国产97久久久久久| 国产日韩精品在线| 日韩欧美有码在线| 91精品国产91久久久久久吃药| 欧美日韩激情网| 日韩毛片中文字幕| 欧美性视频精品| 91九色在线视频| 日韩欧美主播在线| 久久久久久亚洲精品不卡| 成人妇女免费播放久久久| 中文字幕免费精品一区高清| 最新亚洲国产精品| 国产一区欧美二区三区| 成人激情在线播放| 萌白酱国产一区二区| 久久久久久亚洲精品| 国产精品免费一区豆花| 精品欧美aⅴ在线网站| 日韩美女毛茸茸| 国产成人精品视频在线观看| 久久久这里只有精品视频| 日韩欧美在线播放| 久热爱精品视频线路一| 海角国产乱辈乱精品视频| 成人免费观看49www在线观看| 久久精品视频网站| 91av在线播放视频| 欧美大胆a视频| 国产亚洲精品久久久久久777| 九九视频这里只有精品| 国产日韩中文在线| 欧美极品美女视频网站在线观看免费| 中文字幕在线日韩| 国产精品va在线| 国产精品久久久久91| 色婷婷**av毛片一区| 97成人在线视频| 91九色视频导航| 久久久久久999| 2019中文字幕免费视频| 91精品免费看| 国产精彩精品视频| 国产精品精品国产| 国产精品va在线播放我和闺蜜| 日韩成人在线视频网站| 久久久精品日本| 欧美大尺度电影在线观看| 欧美亚洲另类在线| 国产精品69久久| 中文字幕亚洲字幕| 久久成人av网站| 91免费高清视频| 国产日韩欧美一二三区| 亚洲视频专区在线| 精品国产91久久久久久老师| 日韩电影免费观看在线| 国产91在线播放九色快色| 一区二区成人av| 欧洲亚洲免费在线| 久久99精品久久久久久琪琪| 日本中文字幕成人| 日韩精品视频观看| 亚洲精品久久久久国产| 国产激情视频一区| 在线观看欧美视频| 国产精品美女在线观看| 亚洲淫片在线视频| 一个人看的www久久| 97色在线视频观看| 成人午夜激情免费视频| 一区二区亚洲欧洲国产日韩| 日韩成人中文字幕在线观看| 欧美日韩国产黄|