用VIM編寫C C 程式

2021-04-02 10:43:56 字數 2517 閱讀 8340

vi是unix下最常用的文字編輯器。vim(vi improved)則是它的增強版。有人常常拿vim和emacs比較,vim儘管不象emacs那樣有那麼多的功能,但是比emacs更方便、好用。用過emacs的人肯定會為emacs的一些快捷鍵感到煩惱,有時候用真希望自己有八隻手。vim的學習曲線也不象emacs那麼長,只要看看vim自帶的vitutor,大約只要20分鐘就能掌握vim的用法。對於unix下的c/c++的程式設計師,我推薦你們使用vim+ctags的組合來寫程式。其中原因聽我慢慢道來。(下面對vim的介紹主要是針對5.6以後的版本)

vim支援語法制導和自動縮排

vim會根據檔案的字尾名,如:*.c、*.cpp、*.cc,等,自動設定語法制導(syntax highlighting)。c/c++中的一些保留字,如:if、for、include,等等,就會有不同的顏色,這樣就會減少程式設計師犯錯的可能,閱讀程式的時候相對來說也輕鬆很多。用下面這些命令在vim中檢視有關語法制導的幫助:「:h syntax」、「:h syn-qstart」、「:h syntax-printing」。

vim也支援根據gnu的風格自動縮排,這樣程式設計師編寫出來的**就更易閱讀,而且也有利於培養好的程式設計風格。用下面這些命令在vim中檢視有關自動縮排的幫助:「:h cindent」、「:h cinoptions」、「:h cinoptions-values」、「:h cinkeys」、「:h cinwords」。

使用ctags

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」(變數或函式或其它)的檔案,並把游標定位到這一行。

:ta foo_bar

3)        最方便的方法是把游標移到變數名或函式名上,然後按下「ctrl-]」。用「ctrl-o」退回原來的地方。

注意:執行vim的時候,必須在「tags」檔案所在的目錄下執行。否則,執行vim的時候還要用「:set tags=」命令設定「tags」檔案的路徑,這樣vim才能找到「tags」檔案。

快速改正錯誤

在vim編輯器的環境下用「: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的配置檔案是「.vimrc」,用這個檔案可以配置vim。vim的圖形介面的版本叫gvim。

用VIM編寫C C 程式

用vim編寫c c 程式 vi是unix下最常用的文字編輯器。vim vi improved 則是它的增強版。有人常常拿vim和emacs比較,vim儘管不象emacs那樣有那麼多的功能,但是比emacs更方便 好用。用過emacs的人肯定會為emacs的一些快捷鍵感到煩惱,有時候用真希望自己有八隻...

用VIM編寫C C 程式

vi是unix下最常用的文字編輯器。vim vi improved 則是它的增強版。有人常常拿vim和emacs比較,vim儘管不象emacs那樣有那麼多的功能,但是比emacs更方便 好用。用過emacs的人肯定會為emacs的一些快捷鍵感到煩惱,有時候用真希望自己有八隻手。vim的學習曲線也不象...

用VIM編寫C C 程式

用vim編寫c c 程式 vi是unix下最常用的文字編輯器。vim vi improved 則是它的增強版。有人常常拿vim和emacs比較,vim儘管不象emacs那樣有那麼多的功能,但是比emacs更方便 好用。用過emacs的人肯定會為emacs的一些快捷鍵感到煩惱,有時候用真希望自己有八隻...