vi編輯器的學習使用(十二)

2021-08-22 01:30:15 字數 3346 閱讀 4931

我們在用vim來處理檔案時可以使用vim的自動完成功能來大大加速我們的工作速度.所謂的自動完成也就是說當我們輸入乙個單詞的一部分以後,按ctrl-p,vim就會自動的來完成剩下的部分.我們在前面的學習過程中曾用:abbreviate命令來簡記某乙個單詞來達到自動完成的目的,而在這裡我們將看到是乙個更加強大的自動完成功能.vim能非常簡單和靈活的來決定要用哪乙個單詞來自動完成. 我們在使用vim這個強大的自動完成功能的同時,還可以自已定義我們的自動完成的特徵,而且還可以使用不同型別的自動完成功能.

如果我們在編寫c程式,而我們所謂得到的下面的乙個句子:

total=ch_array[0]+ch_array[1]+ch_array[2]

這時我們輸入total=ch_array[0]+ch_,然後按下ctrl-p,vim就會自動的替我們完成其餘的部分,這時我們得到將是

total=ch_array[0]+ch_array

由此可以看到我們在處理檔案時用這樣的方式可以大大的加快我們的處理速度.

那麼vim是如何找到匹配的單詞的呢?在預設的情況下,vim在查詢乙個單詞時是按照如下的步驟:

1 在當前檔案中進行查詢

2 在其他視窗中進行查詢

3 在其他的已裝入的緩衝區中進行查詢

4 在沒有裝入緩衝區的檔案中進行查詢

5 在當前的標記(tag)列表是進行查詢

6 在所有的由當前檔案的#include包含進來的檔案中進行查詢

當然了我們也可以自定義我們的查詢順序.

我們在使用自動完成功能時的命令ctrl-p是向後查詢匹配的單詞,而還有乙個命令ctrl-n是向前查詢匹配的單詞.他們有同樣的功能和作用,所不同的只是查詢方向上的不同.

vim還提供了許多的命令可以使得我們來自定義我們的一些查詢上的特徵.例如我們可以用下面的命令來告訴vim在在自動完成的查詢過程中忽略大小寫的區別:

:set ignorecase

這樣以後如果我們輸入ins,vim就會認為是insert,inside或者是instep.當然了前提是在我們所編輯的文字中含有這些詞,要不就會找得到了.

為了能夠精確的進行查詢來自動完成,我們並不希望上面的情況出現,我們可以設定一些選項來告訴vim區分大小寫的情況.這時我們要用到下面的命令:

:set infercase

這樣以後如果我們再輸入ins,與其相匹配的列表就成為了instep,inside,insert.我們可以通過按ctrl-p或是ctrl-n來進行匹配完成.

在大多數情況下,vim預設的設定可以很好的來完成工作,但是有時我們要定義自己的一些完成的選項,這時我們就要用到complete這個選項了.這個選項的格式如下:

:set complete=key,key,key

而這個命令中可能出現的key值如下:

. 當前檔案

b 已被裝緩衝區,但是沒有在視窗內的檔案

d 在當前的檔案中定義和由#include包含進來的檔案

i 由#include包含進來的檔案

k 由dictionary選項定義的檔案

kfile 名為的檔案

t 標記(tags)檔案

u 沒有載入的緩衝區

w 在其他視窗中的檔案

我們可以使用path選項來告訴vim如何來查詢我們在當前檔案中所包含進來的檔案.我們還可以指定乙個字典,這個選項的格式如下:

:set dictionary=file,file,....

這個選項定義了由命令ctrl-p和ctrl-n進行匹配查詢時所要查詢的檔案.在linux系統中這個定義檔案在/usr/dict/words中,所以如果我們要將這個檔案新增進來進行查詢的話,我們就要用到下面的命令:

:set dictionary=/usr/dict/words

如果我們要使用乙個我們自己的檔案也可以這樣的來設定

:set dictionary=/home/oualline/words,/usr/doc/words

我們也可以指定乙個字典檔案和k選項組合使用:

:set dictionary=k/usr/oualline/words

我們也可以多次的使用k這個標記選項:

:set dictionary=k/usr/dict/words,k/usr/share/words

在上面提到的ctrl-p和ctrl-n進行查詢匹配時查詢的範圍比較的寬範,我們當然也可以使用命令進行一些比較嚴格的查詢.這時我們可以使用命令ctrl-x.當我們輸入ctrl-x時我們會進入ctrl-x的乙個子模式.這時我們可以使用下面的命令進行查詢:

ctrl-d 巨集定義

ctrl-f 檔名

ctrl-k 字典

ctrl-i 當前檔案以及由#include包含進來的檔案

ctrl-l 整個行

ctrl-] 標記(tags)

ctrl-p 向前查詢,與沒有ctrl-x命令時相同

ctrl-n 向後查詢,與沒有ctrl-x命令時相同

ctrl-x

ctrl-d命令查詢巨集定義.他也會查詢#include檔案.當我們執行完這個命令以後就可以使用ctrl-p,ctrl-n來進行匹配查詢.

例如我們可以編輯下面的測試檔案:

include.h檔案中的內容

#define max(x,y) ((x)<(y)?(y):(x))

#define min(x,y) ((x)<(y)?(x):(y))

int sum(int i1,int i2)

main.c檔案中的內容:

#include "include.h"

#define more "/usr/ucb/more"

這時我們開始編輯main.c檔案,如果我們按下ctrl-x我們就會進入ctrl-x的子模式.如果我們要查詢乙個巨集定義,我們可以按下ctrl-d,這時就會在螢幕的底部簡單的顯示出有多少匹配的選項.這樣我們就可以用ctrl-p和ctrl-n來進行自動完成的功能了.而命令ctrl-x ctrl-]則是查詢下乙個標記(tag),標記是乙個c函式的定義.我們可以用命令ctags命令來生成乙個c函式定義的列表.我們可以這樣的來使用這個命令:

$ctags *.c *.h

這樣以後我們就可以在插入模式入下用ctrl-x ctrl-]命令來進行標記的查詢和匹配了.

在預設的情況下,vim編輯器只是簡單的顯示出標記的名字,我們可以執行下面的命令,這樣以後就可以顯示出整個標記了:

:set showfulltag

我們可以使用ctrl-x ctrl-f命令來匹配檔名.他會在當前的目錄下查詢檔案並會顯示出匹配的內容,這時你就可以用ctrl-p和ctrl-n命令來選擇你想要的匹配選項了.

到目前為止我們所說還只是對單詞進行操作,我們可以用命令ctrl-x ctrl-l對一行進行匹配操作,同樣的我們也可以用ctrl-n和ctrl-p來進行選項的匹配.我們還可以在輸入ctrl-x命令後用ctrl-y向下滾動文字,而用ctrl-e向上滾動文字.

vi編輯器的學習使用(二十二)

我們在vi編輯器的學習使用 六 學習了基本的視覺化模式,這時我們可以執行簡單的視覺化命令.在這裡我們將會討論更多的與視覺化相關的命令.這些命令中的許多只有很少的觀眾,如果我們可以看這一次的學習,也許這很少的觀眾中就會包括我們.我們在vi編輯器的學習使用 四 知道了如何來用暫存器實現複製,貼上和刪除的...

vi編輯器的學習使用(二十二)

我們在vi編輯器的學習使用 六 學習了基本的視覺化模式,這時我們可以執行簡單的視覺化命令.在這裡我們將會討論更多的與視覺化相關的命令.這些命令中的許多只有很少的觀眾,如果我們可以看這一次的學習,也許這很少的觀眾中就會包括我們.我們在vi編輯器的學習使用 四 知道了如何來用暫存器實現複製,貼上和刪除的...

vi編輯器學習

vi有三種模式,命令模式 插入模式 鍵 末行模式 鍵 退出儲存命令 wq 強制退出 quit 刪除空行的命令 g d 等。需要注意的是在 vi 環境下鍵盤相關操作與windows系統不一樣,第一次使用不太習慣,所以你如果第一次使用,需要記一下相關上下左右鍵 空格 退回鍵等在vi下的意義。首先進入vi...