用VIM編寫(xiě)C/C++程序
Vi是Unix下最常用的文本編輯器。VIM(Vi IMproved)則是它的增強版。有人常常拿VIM和emacs比較,VIM盡管不象emacs那樣有那么多的功能,但是比emacs更方便、好用。用過(guò)emacs的人肯定會(huì )為emacs的一些快捷鍵感到煩惱,有時(shí)候用真希望自己有八只手。VIM的學(xué)習曲線(xiàn)也不象emacs那么長(cháng),只要看看VIM自帶的vitutor,大約只要20分鐘就能掌握VIM的用法。對于Unix下的C/C++的程序員,我推薦你們使用VIM+Ctags的組合來(lái)寫(xiě)程序。其中原因聽(tīng)我慢慢道來(lái)。(下面對VIM的介紹主要是針對5.6以后的版本)
VIM支持語(yǔ)法制導和自動(dòng)縮進(jìn)
VIM會(huì )根據文件的后綴名,如:*.c、*.cpp、*.cc,等,自動(dòng)設置語(yǔ)法制導(Syntax Highlighting)。C/C++中的一些保留字,如:if、for、include,等等,就會(huì )有不同的顏色,這樣就會(huì )減少程序員犯錯的可能,閱讀程序的時(shí)候相對來(lái)說(shuō)也輕松很多。用下面這些命令在VIM中查看有關(guān)語(yǔ)法制導的幫助:“:h syntax”、“:h syn-qstart”、“:h syntax-printing”。
VIM也支持根據GNU的風(fēng)格自動(dòng)縮進(jìn),這樣程序員編寫(xiě)出來(lái)的代碼就更易閱讀,而且也有利于培養好的編程風(fēng)格。用下面這些命令在VIM中查看有關(guān)自動(dòng)縮進(jìn)的幫助:“:h cindent”、“:h cinoptions”、“:h cinoptions-values”、“:h cinkeys”、“:h cinwords”。
使用Ctags
VIM中已經(jīng)帶了Ctags這個(gè)程序。盡管ctags也可以支持其它編輯器,但是它正式支持的只有VIM。Ctags可以幫助程序員很容易地瀏覽源代碼。用下面的命令可以在源代碼的根目錄下創(chuàng )建“tags”文件:
[/home/brimmer/src]$ ctags -R
“-R”表示遞歸創(chuàng )建,也就包括源代碼根目錄下的所有子目錄下的源程序。“tags”文件中包括這些對象的列表:
l 用#define定義的宏
l 枚舉型變量的值
l 函數的定義、原型和聲明
l 名字空間(namespace)
l 類(lèi)型定義(typedefs)
l 變量(包括定義和聲明)
l 類(lèi)(class)、結構(struct)、枚舉類(lèi)型(enum)和聯(lián)合(union)
l 類(lèi)、結構和聯(lián)合中成員變量或函數
VIM用這個(gè)“tags”文件來(lái)定位上面這些做了標記的對象,下面介紹一下定位這些對象的方法:
1) 用命令行。在運行vim的時(shí)候加上“-t”參數,例如:
[/home/brimmer/src]$ vim -t foo_bar
這個(gè)命令將打開(kāi)定義“foo_bar”(變量或函數或其它)的文件,并把光標定位到這一行。
2) 在vim編輯器內用“:ta”命令,例如:
:ta foo_bar
3) 最方便的方法是把光標移到變量名或函數名上,然后按下“Ctrl-]”。用“Ctrl-o”退回原來(lái)的地方。
注意:運行vim的時(shí)候,必須在“tags”文件所在的目錄下運行。否則,運行vim的時(shí)候還要用“:set tags=”命令設定“tags”文件的路徑,這樣vim才能找到“tags”文件。
快速改正錯誤
在VIM編輯器的環(huán)境下用“:make”就可以編譯程序,當然其前提是在當前目錄下有Makefile文件。運行完“:make”之后,如果程序中有錯誤,就會(huì )顯示出來(lái)。這時(shí)候,光標會(huì )自動(dòng)指向第一個(gè)出現錯誤的地方,而且你還可以看到錯誤的提示。然后,你就可以改正錯誤,而不用手工找到出錯的那一行。記住下面幾個(gè)有用的命令:
l “:cl”列出錯誤
l “:cn”讓光標指向下一個(gè)錯誤
l “:cp”讓光標指向上一個(gè)錯誤
l “:cnew”從頭開(kāi)始
你甚至可以讓VIM識別出其它編譯器而不是gcc的錯誤提示。這對一些開(kāi)發(fā)嵌入式系統的程序員這很有用,因為他們很可能用的不是gcc而是其它編譯器。通過(guò)設置“errorformat”的值,可以讓VIM識別出編譯器的出錯提示。因為不同的編譯器的出錯提示是不同的,所以如果用的不是gcc就要重新設置。
“errorformat”的值是一個(gè)字符串,它的格式和C語(yǔ)言的scanf的字符串格式相識。
gcc的“errorformat”的值為:%f:%l:\%m。其中“%f”表示文件名,“%l”表示行號,“%m”表示出錯信息。
用“:h errorformat”查看詳細的幫助信息。
用“:h quickfix”、“:h make”、“:h makeprg”、“:h errorfile”查看其它的信息。
有用的快捷鍵
下面的這些快捷鍵對程序員很有幫助:
在函數中移動(dòng)光標
[[ 轉到上一個(gè)位于第一列的“{”
]] 轉到下一個(gè)位于第一列的“{”
{ 轉到上一個(gè)空行
} 轉到下一個(gè)空行
gd 轉到當前光標所指的局部變量的定義
* 轉到當前光標所指的單詞下一次出現的地方
# 轉到當前光標所指的單詞上一次出現的地方
括號的匹配
% 用來(lái)進(jìn)行小括號、中括號和大括號的匹配。這要看當前光標指向的是什么符號了。
其它
VIM的配置文件是“.vimrc”,用這個(gè)文件可以配置VIM。VIM的圖形界面的版本叫g(shù)vim。VIM也有用于Windows平臺的版本。
VIM的資源