學習vi和vim編輯器(15):vim對vi的主要改進

來源:互聯網
上載者:User

標籤:編程工具   vim   

vim對vi做了大量改進,本章將討論在vim中添加的主要功能:包括內建協助功能、啟動與初始化選項、新的移動命令、擴充的Regex、擴充的撤銷、自訂可執行檔等。

內建協助功能:

vim的說明文檔超過10萬行,幾乎所有的說明都可以通過vim內建的協助工具取得,使用它最簡單的形式就是調用" :help "命令。使用內建的協助功能需要瞭解vi的導航技巧,知道如何在標籤間前進與後退。當游標處於某個標籤上時,按下" CTRL+] "前往該標籤,按下" CTRL+T "或者" CTRL+O "從該標籤返回。

" :help "命令後面可以包含說明主題,我們輸入的主題字串可能會與現在vim說明主題裡的某個字串符合。例如輸入" help split "再按下tab鍵後,help命令會在與"split"相關的說明主題字串間迴圈,例如"split()"、":split"等等,想看某個說明主題,直接按下enter鍵即可。

啟動與初始化選項:

vim可以使用不同的機制在啟動時設定環境,vim也可以使用一系列初始設定檔案來定義並調整難以計數的行為組合。想要瞭解vim的啟動細節,可以使用":help startup"命令。

命令列選項:

vim的命令列選項提供了靈活性與威力。有些選項可以調用額外功能,有的選項可以抑制預設行為。在命令列選項後面,可以列出一個或多個待編輯的檔案,檔案名稱甚至可以為" - ",讓vim知道輸入來自標準輸入。接下來列出部分vim有但vi沒有的命令列選項(vim已包含了所有vi選項):

-b:在二進位模式中編輯;

-c command:command將被視為ex命令執行;

-C:以相容(vi)模式運行vim;

-cmd command:command在vimrc檔案前執行,這也是-c選項的長形式;

-d:以diff模式啟動。vim執行2-4個檔案的diff功能以及可以設定選項來簡化檔案差異的查看。在UNIX中vim使用系統的diff命令來執行diff任務,在Windows上則可下載另行提供的可執行檔;

-E:以改進的ex模式啟動;

-g:啟動gvim(GUI);

-m:關閉寫入選項,此時不能修改緩衝區;

-o:所有檔案均各自開啟視窗。可以指定要開啟的視窗數量(以整數指定,緊跟在o選項後面),命令列中列出的檔案分別於指定數量的視窗中開啟。若視窗數超過檔案數,vim開啟空白視窗,以滿足數量需求。如果視窗數小於檔案數,則將剩下的檔案放入vim的緩衝區中;

-O:與" -o "一樣,但開啟垂直分隔的視窗;

-y:以easy模式運行vim,對初學者而言這個選項會使vim有較為直觀的行為,但經驗豐富的使用者反而會對此覺得困惑;

-Z:以restricted模式運行,基本上關閉所有外部介面並防止對系統功能訪問;

與命令名稱相關的行為:

vim有兩種版本:圖形版和文字版,UNIX使用者只需要簡單地使用下列命令,即可獲得所需行為:

vim:啟動文字版vim;

gvim:啟動圖形版vim。通常,gvim和vim是兩個不同的可執行程式。gvim需要在編譯vim時開啟所有GUI選項。也可以使用" vim -g "啟動gvim,在UNIX中,gvim需要X Window System;

view,gview:以唯讀模式啟動vim或gvim。與" vim -R "相同;

rvim:以restrictive模式啟動vim,所有對shell命令的外部存取均被禁止;

rgvim:和rvim相同,但用於圖形版;

rview:與view相同,但於restricted模式中啟動;

rgview:與rview相同,但用於圖形版;

evim,eview:於編輯或唯讀查看時使用easy模式。這個命令沒有相應的圖形版,因為gvim已經被視為簡單的操作方式;

vimdiff,gvimdiff:以"diff"模式啟動並比較輸入檔案的差異;

ex,gex:使用ex行編輯器。與" vim -e "相同。

系統與使用者的設定檔:

vim依照特定的順序尋找初始設定檔案,它執行找到的第一組指令(可能以環境變數或檔案的形式出現),然後開始編輯。所以Vim在下列清單中遇到的第一個項目,就是清單中被執行的唯一項目。順序如下:

1,VIMINIT:環境變數,如果變數不為空白,Vim將它的內容作為ex命令執行;

2,使用者的vimrc檔案:vimrc(vim資源)初始設定檔案是個跨平台的檔案,在UNIX系統中,vim尋找的該檔案的位置為:" $HOME/.vimrc "(注意,在UNIX中,如果" .vimrc "檔案不存在,也會嘗試尋找" _vimrc "檔案);

3,環境變數EXINIT:EXINIT變數的內容也將作為ex命令執行;

4,使用者的exrc檔案:類似於vimrc檔案。在UNIX系統中,vim尋找該檔案的位置為" $HOME/.exrc ";

5,exrc選項:如果設定了vim的exrc選項,vim會在目前的目錄下尋找三個額外的設定檔。在UNIX中分別為".vimrc","_vimrc",".exrc";

原書中並沒有將3和4項列出,可能書中認為這兩個搜尋位置嚴格意義上其實是用來對vi編輯器進行初始化的,可以參考《學習vi和vim編輯器(10):進階編輯方法(1)》。但是畢竟在這兩個位置進行設定也能完成對vim編輯器的初始化,所以我認為應該明確的將這兩個位置也列出。而且在原書中5也沒有指定是目前的目錄。關於vim初始化搜尋的順序可以通過":help startup"瞭解更多,那裡協助文檔寫得很清楚。

vimrc檔案是配置vim編輯特性較好的地方,幾乎任何選項都可以在該檔案中設定。以下是vimrc的一些注意事項:

1,注釋都以雙引號(")開始,可位於一行的任意位置。所有位於雙引號後的文本,包括雙引號都會被忽略;

2,可用(也可不用)冒號表示ex命令;

3,如果一大組選型定義能分開為不同行,這個檔案將較容易管理;

環境變數:

有許多環境變數影響到vim的啟動及編輯時的行為,這裡列出最為明顯的且在未配置時會以預設值處理的環境變數:

SHELL:指定vim用於執行shell命令的shell;

TERM:設定vim內部的internal term選項。但這個選項其實不太需要,編輯器會以自己覺得適當的方式設定其終端;

MYVIMRC:覆蓋vim對初始設定檔案的搜尋。如果啟動時找到MYVIMRC的值,vim假設這個值是初始設定檔案的名稱,如果檔案存在,則從中取得初始化設定,並不再搜尋其他檔案;

VIMINIT:指定vim啟動時欲執行的命令。命令間以豎線分隔即可定義多個命令;

EXINIT:與VIMINIT相同;

VIM:包含標準vim安裝系統資訊的系統目錄路徑;

VIMRUNTIME:指向vim支援的檔案,例如線上說明文檔,外掛程式目錄等。通常vim能自己找出這些檔案;

新的移動命令:

vim提供所有vi移動命令,同時增加了一些命令:

Ctrl+end:轉至檔案最後一行的最後一個字元,如果加上數字,則以數字指定行,跳到該行的最後一個字元;

Ctrl+home:轉至檔案第一行的第一個非Null 字元。或者可以使用gg命令。(Ctrl+end 和 Ctrl+home 這兩個移動命令在我測試時都不起作用,暫時把這個問題先記下來吧);

count%:轉至依據檔案百分比計算出的行。游標置於該行附近第一個非空白的行。而且需要注意,vim以檔案的行數作為計算依據,而不是以總字元數為依據;

:go n 或者n go: 轉至緩衝區的第n個位元組,所有字元包括行末字元都計算在內;

可視模式的移動:

vim能夠讓使用者以可視化的方式定義所選項,且在此可視化所選項上執行編輯命令。這個功能和在圖形化編輯器中點擊並拖動滑鼠造成的高亮效果很像。vim在定義可視選擇項時,也能讓我們使用其它的命令以及一些特殊的可視模式命令。

在正常模式中輸入v即進入可視模式(再次輸入v即可關閉可視模式)。進入可視模式後,任何移動游標的命令除了將游標移動到新位置,沿途還會以高亮顯示文本。而且,在可視模式中,vim使用一些特有命令,方便我們藉由選擇游標附近的文字物件而選擇文本:

countaw,countaW:選擇count指定的單詞數量。分隔單詞的空格不視為一個詞。小寫w將標點符號也視為一個詞,而大寫W只以空格作為單詞的分隔字元;

countiw,countiW:和上條命令類似,只不過將分隔單詞的空格也視為一個詞;

as,is:增加選擇一個句子,或增加選擇內部句子(inner sentence,不含空格);

ap,ip:增加選擇一個段落,或增加選擇內部段落;

想要瞭解文字物件更多細節內容,可以使用協助命令" :help text-objects "。

擴充的正在運算式:

vim提供豐富的Regex匹配工具,具體可以參考《vi和vim編輯器》 P173。

自訂可執行檔:

當前電腦對全功能的vim可執行檔已經提供了充足的處理能力,我們可以取用所有的vim擴充功能,且確信其效能表現良好。但某些情況下,需要擷取功能較為簡潔的vim。此時,比起使用新選項重新設定,重新編譯和安裝vim,實在簡單多了。


本章vim命令總結:

":help","CTRL+]","CTRL+T","CTRL+O",vim的"-b"、"-c"、"-C"、"-cmd"、"-d"、"-E"、"-g"、"-m"、"-o"、"-O"、"-y"、"-Z"選項,vim,gvim,view,gview,rvim,rgvim,rgview,evim,eview,vimdiff,gvimdiff,ex,gex,"Ctrl+end","Ctrl+home","gg","count%",":go n","n go","countaw",

"countaW","countiw","countiW","as","is","ap","ip"。

學習vi和vim編輯器(15):vim對vi的主要改進

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.