老廖曾經在PHPER雜誌上發表過一篇文章叫做用VIM做PHP開發環境,在裡面詳細介紹了用VIM做php開發需要做的準備,這篇文章就結合一些資料和我自己的一些經驗來介紹下用VIM做C/C++開發需要做的事情,相對來說要比做php開發方便些。
前提條件是當然是你已經下載了VIM,如果沒有的話請先到官方網站下載最新版本,地址是:http://www.vim.org/download.php
協助文檔::http://vimcdoc.sourceforge.net/
首先從視覺方面:
第一個要做的是縮排,修改你的VIM設定檔_vimrc,在最後加入set cindent,這樣就設定了c風格的縮排,在這裡縮排的大小是shiftwidth的值。
第二個要做的是文法高亮,這個是必須的,在中_vimrc加入syntax enable。
第三個要做的字型的設定,設定一個舒服的字型可以讓你編程的時候舒服好多,用editplus的時候我就用的Consolas,在vim中我還是用的這種字型,在_vimrc中加入
if has(”gui_running”)
set guifont=Consolas:h9
endif
表示運行介面vim的時候就用這種字型。
第四,設定色彩配置,可以到點擊這兒下載,然後放到$VIM"vimfiles"colors這個目錄下,然後在中加入如下配置
if has(”gui_running”)
set guifont=Consolas:h9
” set color schema
colorscheme colorscheme_name
endif
colorscheme_name為你需要設定的色彩配置的名稱。
接下來是在運行程式中用到的:
第一,使用ctag
VIM中已經帶了Ctags這個程式。儘管ctags也可以支援其它編輯器,但是它正式支援的只有VIM。Ctags可以協助程式員很容易地瀏覽原始碼。用下面的命令可以在原始碼的根目錄下建立“tags”檔案:
[/home/brimmer/src]$ ctags -R
“-R”表示遞迴建立,也就包括原始碼根目錄下的所有子目錄下的來源程式。“tags”檔案中包括這些對象的列表:
l 用#define定義的宏
l 枚舉型變數的值
l 函數的定義、原型和聲明
l 名字空間(namespace)
l 類型定義(typedefs)
l 變數(包括定義和聲明)
l 類(class)、結構(struct)、枚舉類型(enum)和聯合(union)
l 類、結構和聯合中成員變數或函數
VIM用這個“tags”檔案來定位上面這些做了標記的對象,下面介紹一下定位這些對象的方法:
1) 用命令列。在運行vim的時候加上“-t”參數,例如:
[/home/brimmer/src]$ vim -t foo_bar
這個命令將開啟定義“foo_bar”(變數或函數或其它)的檔案,並把游標定位到這一行。
2) 在vim編輯器內用“:ta”命令,例如:
:ta foo_bar
3) 最方便的方法是把游標移到變數名或函數名上,然後按下“Ctrl-]”。用“Ctrl-o”退回原來的地方。
注意:運行vim的時候,必須在“tags”檔案所在的目錄下運行。否則,運行vim的時候還要用“:set tags=”命令設定“tags”檔案的路徑,這樣vim才能找到“tags”檔案。
你還可以選擇使用taglist這個外掛程式,這個外掛程式可以在右側顯示函數,變數等的列表
第二,改正程式中的錯誤
在VIM編輯器的環境下用“:make”(make工具的使用已經在我昨天的文章中 提到的雲風的幾篇文章中詳細介紹到)就可以編譯器,當然其前提是在目前的目錄下有Makefile檔案。運行完“:make”之後,如果程式中有錯誤,就 會顯示出來。這時候,游標會自動指向第一個出現錯誤的地方,而且你還可以看到錯誤的提示。然後,你就可以改正錯誤,而不用手工找到出錯的那一行。記住下面 幾個有用的命令:
l “:cl”列出錯誤
l “:cn”讓游標指向下一個錯誤
l “:cp”讓游標指向上一個錯誤
l “:cnew”從頭開始
你甚至可以讓VIM識別出其它編譯器而不是gcc的錯誤提示。這對一些開發嵌入式系統的程式員這很有用,因為他們很可能用的不是gcc而是其它編譯器。通過設定“errorformat”的值,可以讓VIM識別出編譯器的出錯提示。因為不同的編譯器的出錯提示是不同的,所以如果用的不是gcc就要重新設定。
“errorformat”的值是一個字串,它的格式和C語言的scanf的字串格式相識。
gcc的“errorformat”的值為:%f:%l:"%m。其中“%f”表示檔案名稱,“%l”表示行號,“%m”表示出錯資訊。
用“:h errorformat”查看詳細的協助資訊。
用“:h quickfix”、“:h make”、“:h makeprg”、“:h errorfile”查看其它的資訊。
第三,使用快速鍵
下面的這些快速鍵對程式員很有協助:
在函數中移動游標
[[ 轉到上一個位於第一列的“{”
]] 轉到下一個位於第一列的“{”
{ 轉到上一個空行
} 轉到下一個空行
gd 轉到當前游標所指的局部變數的定義
* 轉到當前游標所指的單詞下一次出現的地方
# 轉到當前游標所指的單詞上一次出現的地方
括弧的匹配
% 用來進行小括弧、中括弧和大括弧的匹配。這要看當前游標指向的是什麼符號了。
結語:
vim一直是一些牛人推薦的工具並一直存在著是有著道理的,她大大提高了我們的工作效率,如果你打算長期變成的話,花一個星期的時間來熟悉vim的使用時很有必要的!