首先,基礎的vim的使用請直接google。
第二,vim的安裝和配置請參考這篇經典教程:
http://blog.csdn.net/wooin/archive/2008/08/28/2844868.aspx
再次感謝吳垠。
這裡是我的vim的配置和一些使用小技巧,貼上來做筆記:)
每次都從頭象吳垠說的那樣配置有些麻煩,我把我的vimrc和插件都儲存起來,
放在home.vim檔案夾下,壓縮存放:),要是系統重裝,解壓運作下面的
install腳本的指令即可。
hongmy525 的 vim 的安裝(參考install腳本):
注意:這裡假設你和我一樣不是root使用者.
1、在$HOME目錄下建立.vim這個檔案夾;
2、把準備好的插件還有配置檔案( home.vim/* )拷貝都$HOME/.vim/目錄下
3、做個連接配接讓$HOME/.vimrc指向 $HOME/vimrc
4、讓root使用者做兩個連接配接,/root/.vim指向$HOME/.vim,
/root/.vimrc指向$HOME/.vim/vimrc
vim的版本是7.2源碼編譯安裝,下面是vim支援的教進階功能。
源碼編譯Vim來使用時需要加 -enable-cscope選項.
一般我安裝 ctags、cscope 這倆個插件是:
$ sudo apt-get install ctags cscope
我習慣這樣建立索引檔案:
$ ctags -R --fields=+lS && cscope -Rbq
把這個指令寫成shell腳本放到/usr/bin下。
1、用vim + ctags
a 首先我們必需給要閱讀的原始碼建一個或多個tags檔案,
在shell下利用ctags指令給單個檔案建立tags如下:
$ ctags filename.c
要給同一個目錄下的所有檔案建立tags如下:
$ ctags -R
這時在tags檔案所在的目錄下打開源檔案閱讀,vim就會自動調用tags檔案。
如果tags檔案不在目前目錄下,能在指令模式下用下面的指令設定tag檔案
:set tag=tag_file_path
但是一般對我來說tags都在目前目錄下,是以我習慣于在~/.vimrc中加入:
:set tags=$PWD/tags
b 要在vim下跳到一個函數的定義處能在指令模式下用下面的指令:
:tag fuction_name
這個指令将把你帶到fuction_name函數的定義處。
這個功能十分有用,以前一直沒有注意。
c 另外,ctrl + ]指令會把目前光标下的單詞作為tag的名字,并直接跳轉。
用ctrl + t指令能回到前一個tag,你能在ctrl + t前面加一個數字表示往回跳
的層數。
d 使用Ctrl + g能顯示目前正在編輯的檔案名,及所在的行号。
如果源檔案的排版比較亂的話,能通過指令gg=G來格式化整個源檔案。
2、cscope
在使用cscope之前需要先生成一個資料庫
a 生成索引檔案:
cscope 用于生成索引檔案的選項:
-R: 在生成索引檔案時,搜尋子目錄樹中的代碼
-b: 隻生成索引檔案,不進入cscope的界面
-q: 生成cscope.in.out和cscope.po.out檔案,加快cscope的索引速度
-k: 在生成索引檔案時,不搜尋/usr/include目錄
-i: 如果儲存檔案清單的檔案名不是cscope.files時,需要加此選項告訴cscope到
哪兒去找源檔案清單。能使用“-”,表示由标準輸入獲得檔案清單。
-I dir: 在-I選項指出的目錄中查找頭檔案
-u: 掃描所有檔案,重新生成交叉索引檔案
-C: 在搜尋時忽略大小寫
-P path: 在以相對路徑表示的檔案前加上的path,這樣,你不用轉換到你資料庫
檔案所在的目錄也能使用他了。
如果你的源碼中隻含有.c,.h檔案,你能直接使用
$ cscope -Rbq
在使用cscope之前需要先生成一個資料庫,你可以使用cscope-indexer(如果多個
目錄你可以使用-R選項),它會在目前目前下生成一個cscope.files的檔案,這個文
件包含了cscope需要生成索引的全部檔案,因為cscope-indexer不會自動查到.cpp,.S
字尾的檔案,是以最後使用find來生成cscope.files檔案:
$ find ./ -name “*.c” -or -name “*.h” -or -name “*.cpp” > cscope.files
上面的指令會把目前目錄下所有.c,.h,.cpp檔案列出并寫入cscope.files檔案中。
接着使用cscope -Rbq來生成索引引。
$ cscope -Rbq
一般使用方法:
$ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.S" | cscope -Rbq
b 接着你就能使用vim來打開一個檔案來浏覽編輯代碼了。
想檢視cscope的使用方法最好的辦法是在vim中輸入:
:cs help
這裡還是稍稍說明一下:
s: 查找C語言符号,即查找函數名、宏、枚舉值等出現的地方
g: 查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能
d: 查找本函數調用的函數
c: 查找調用本函數的函數
t: 查找指定的字元串
e: 查找egrep模式,相當于egrep功能,但查找速度快多了
f: 查找并打開檔案,類似vim的find功能
i: 查找包含本檔案的文
例如平常最常用的查詢那個函數調用了函數func():
:cs f c func
或
:cs find c func
上兩幅效果圖:
這個是自動補全:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL09Gaz5WZlJ3YT9CXwMDMxgDMwIzLcNXZnFWbJlnc05WRvwVNyUTetdmbvh2LcRXZu9lbkN3Yfd2bsJ2Xw9CXzV2Zh1WavwFdl5mLuR2cj5yZvxmYtA3Lc9CX6MHc0RHaiojIsJye.png)
下面這個是函數參數提示:
有朋友讨論大小寫忽略:
這裡截圖大小寫忽略:
配置到這,無論是用vim來程式設計還是用來閱讀源碼都基本夠用了。再次感謝吳垠~
我的配置檔案的和安裝的腳本放在相容核心的論壇上,因為這裡不能上傳檔案,請感興趣的朋友到論壇下載下傳,不過可能需要注冊論壇賬号。
文章的位址:
http://www.unifiedkernel.com/forum/viewtopic.php?f=5&t=48&p=102#p102