|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
用VIM編寫C/C++程序(轉(zhuǎn)載) |
作者:宇宙飛船 欄目:驅(qū)動(dòng)編程 |
用VIM編寫C/C++程序 Vi是Unix下最常用的文本編輯器。VIM(Vi IMproved)則是它的增強(qiáng)版。有人常常拿VIM和emacs比較,VIM盡管不象emacs那樣有那么多的功能,但是比emacs更方便、好用。用過(guò)emacs的人肯定會(huì)為emacs的一些快捷鍵感到煩惱,有時(shí)候用真希望自己有八只手。VIM的學(xué)習(xí)曲線也不象emacs那么長(zhǎng),只要看看VIM自帶的vitutor,大約只要20分鐘就能掌握VIM的用法。對(duì)于Unix下的C/C++的程序員,我推薦你們使用VIM+Ctags的組合來(lái)寫程序。其中原因聽我慢慢道來(lái)。(下面對(duì)VIM的介紹主要是針對(duì)5.6以后的版本) VIM支持語(yǔ)法制導(dǎo)和自動(dòng)縮進(jìn) VIM會(huì)根據(jù)文件的后綴名,如:*.c、*.cpp、*.cc,等,自動(dòng)設(shè)置語(yǔ)法制導(dǎo)(Syntax Highlighting)。C/C++中的一些保留字,如:if、for、include,等等,就會(huì)有不同的顏色,這樣就會(huì)減少程序員犯錯(cuò)的可能,閱讀程序的時(shí)候相對(duì)來(lái)說(shuō)也輕松很多。用下面這些命令在VIM中查看有關(guān)語(yǔ)法制導(dǎo)的幫助:“:h syntax”、“:h syn-qstart”、“:h syntax-printing”。 VIM也支持根據(jù)GNU的風(fēng)格自動(dòng)縮進(jìn),這樣程序員編寫出來(lái)的代碼就更易閱讀,而且也有利于培養(yǎng)好的編程風(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)建,也就包括源代碼根目錄下的所有子目錄下的源程序!皌ags”文件中包括這些對(duì)象的列表: l 用#define定義的宏 l 枚舉型變量的值 l 函數(shù)的定義、原型和聲明 l 名字空間(namespace) l 類型定義(typedefs) l 變量(包括定義和聲明) l 類(class)、結(jié)構(gòu)(struct)、枚舉類型(enum)和聯(lián)合(union) l 類、結(jié)構(gòu)和聯(lián)合中成員變量或函數(shù) VIM用這個(gè)“tags”文件來(lái)定位上面這些做了標(biāo)記的對(duì)象,下面介紹一下定位這些對(duì)象的方法: 1) 用命令行。在運(yùn)行vim的時(shí)候加上“-t”參數(shù),例如: [/home/brimmer/src]$ vim -t foo_bar 這個(gè)命令將打開定義“foo_bar”(變量或函數(shù)或其它)的文件,并把光標(biāo)定位到這一行。 2) 在vim編輯器內(nèi)用“:ta”命令,例如: :ta foo_bar 3) 最方便的方法是把光標(biāo)移到變量名或函數(shù)名上,然后按下“CTRL-]”。用“CTRL-o”退回原來(lái)的地方。 注意:運(yùn)行vim的時(shí)候,必須在“tags”文件所在的目錄下運(yùn)行。否則,運(yùn)行vim的時(shí)候還要用“:set tags=”命令設(shè)定“tags”文件的路徑,這樣vim才能找到“tags”文件。 快速改正錯(cuò)誤 在VIM編輯器的環(huán)境下用“:make”就可以編譯程序,當(dāng)然其前提是在當(dāng)前目錄下有Makefile文件。運(yùn)行完“:make”之后,如果程序中有錯(cuò)誤,就會(huì)顯示出來(lái)。這時(shí)候,光標(biāo)會(huì)自動(dòng)指向第一個(gè)出現(xiàn)錯(cuò)誤的地方,而且你還可以看到錯(cuò)誤的提示。然后,你就可以改正錯(cuò)誤,而不用手工找到出錯(cuò)的那一行。記住下面幾個(gè)有用的命令: l “:cl”列出錯(cuò)誤 l “:cn”讓光標(biāo)指向下一個(gè)錯(cuò)誤 l “:cp”讓光標(biāo)指向上一個(gè)錯(cuò)誤 l “:cnew”從頭開始 你甚至可以讓VIM識(shí)別出其它編譯器而不是gcc的錯(cuò)誤提示。這對(duì)一些開發(fā)嵌入式系統(tǒng)的程序員這很有用,因?yàn)樗麄兒芸赡苡玫牟皇莋cc而是其它編譯器。通過(guò)設(shè)置“errorformat”的值,可以讓VIM識(shí)別出編譯器的出錯(cuò)提示。因?yàn)椴煌木幾g器的出錯(cuò)提示是不同的,所以如果用的不是gcc就要重新設(shè)置。 “errorformat”的值是一個(gè)字符串,它的格式和C語(yǔ)言的scanf的字符串格式相識(shí)。 gcc的“errorformat”的值為:%f:%l:\%m。其中“%f”表示文件名,“%l”表示行號(hào),“%m”表示出錯(cuò)信息。 用“:h errorformat”查看詳細(xì)的幫助信息。 用“:h quickfix”、“:h make”、“:h makeprg”、“:h errorfile”查看其它的信息。 有用的快捷鍵 下面的這些快捷鍵對(duì)程序員很有幫助: 在函數(shù)中移動(dòng)光標(biāo) [][ 轉(zhuǎn)到上一個(gè)位于第一列的“{” ]] 轉(zhuǎn)到下一個(gè)位于第一列的“{” { 轉(zhuǎn)到上一個(gè)空行 } 轉(zhuǎn)到下一個(gè)空行 gd 轉(zhuǎn)到當(dāng)前光標(biāo)所指的局部變量的定義 * 轉(zhuǎn)到當(dāng)前光標(biāo)所指的單詞下一次出現(xiàn)的地方 # 轉(zhuǎn)到當(dāng)前光標(biāo)所指的單詞上一次出現(xiàn)的地方 括號(hào)的匹配 % 用來(lái)進(jìn)行小括號(hào)、中括號(hào)和大括號(hào)的匹配。這要看當(dāng)前光標(biāo)指向的是什么符號(hào)了。 其它 VIM的配置文件是“.vimrc”,用這個(gè)文件可以配置VIM。VIM的圖形界面的版本叫g(shù)vim。VIM也有用于Windows平臺(tái)的版本。 VIM的資源 VIM的主頁(yè):http://www.vim.org/。 版權(quán)說(shuō)明 這篇文章的版權(quán)屬于作者brimmer(brimmer@linuxaid.com.cn)和www.linuxaid.com.cn。如果要轉(zhuǎn)載請(qǐng)加上版權(quán)提示。 Brimmer的主頁(yè):www.linuxaid.com.cn/engineer/brimmer。HTML格式和Word格式的文檔可以在主頁(yè)上找到。 版權(quán)聲明:CSDN是本Blog托管服務(wù)提供商。如本文牽涉版權(quán)問(wèn)題,CSDN不承擔(dān)相關(guān)責(zé)任,請(qǐng)版權(quán)擁有者直接與文章作者聯(lián)系解決。 |
2樓: | >>參與討論 |
作者: 宇宙飛船 于 2005/1/3 10:04:00 發(fā)布:
這篇文章講出了在VIM中用GCC編譯出錯(cuò)信息的自動(dòng)定位的方法。 在很多本書中都沒(méi)有詳細(xì)講到的好東西,這也是我學(xué)習(xí)中的一個(gè)凝點(diǎn)和難點(diǎn),可惜這文章沒(méi)有給出詳細(xì)的實(shí)例步驟,不過(guò)總算有了個(gè)方向。 |
3樓: | >>參與討論 |
作者: 宇宙飛船 于 2005/1/4 9:15:00 發(fā)布:
請(qǐng)大家不要在這貼子里頂! 排在一起的有GCC,GDB,VIM,匯編指南。這樣方便大家查找。 |
|
|
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |