vim內建的自動補全功能

來源:互聯網
上載者:User
vi7.0版本內建了自動補全功能omni-completion。
那麼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 名為{file}的檔案
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)
{return (i1+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向上滾動文本.

上一篇 / 下一篇 2005-07-26 11:16:31 / 個人分類:Linux
查看( 31 ) / 評論( 0 ) / 評分( 0 / 0 )
我們在用Vim來處理檔案時可以使用Vim的自動完成功能來大大加速我們的工作速度.所謂的自動完成也就是說當我們輸入一個單詞的一部分以後,按CTRL
-P,Vim就會自動的來完成剩下的部分.我們在前面的學習過程中曾用:abbreviate命令來簡記某一個單詞來達到自動完成的目的,而在這裡我們將
看到是一個更加強大的自動完成功能.Vim能非常簡單和靈活的來決定要用哪一個單詞來自動完成.
我們在使用Vim這個強大的自動完成功能的同時,還可以自已定義我們的自動完成的特徵,而且還可以使用不同類型的自動完成功能.[@more@]我們在用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 名為{file}的檔案
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)
{return (i1+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向上滾動文本.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.