1. 程式人生 > >VIM:打造LINUX程式設計師的編輯利器(CTAGS+CSCOPE+TAGLIST+CODE_COMPLETE)

VIM:打造LINUX程式設計師的編輯利器(CTAGS+CSCOPE+TAGLIST+CODE_COMPLETE)

http://smilejay.com/2012/10/vim-for-linux-programmer/

在2年前,寫過一篇文章“Vim:打造Linux C/C++程式設計師的編輯器”,先在根據這兩年的Vim使用經驗對其進行一些補充和完善,以便在使用Vim時(偶爾忘記配置或快捷鍵)作為參考。經過適當的配置,配合一些快捷鍵,VIM會成為Linux上一個程式碼閱讀、編輯的強大工具。

所謂“工欲善其事,必先利其器”,所謂“磨刀不誤砍柴工“。
在Linux下,vim是一種最常見的編輯器,很多linux的發行版就自帶了(不過 Ubuntu目前時需要自己安裝的,預設只帶了vi)。今天搞了半天了Vim,通過幾個外掛來武裝我的vim,使其能向傳說中的一樣成為C/C++程式設計師的利器。
通過配置和外掛,實現的功能有:語法高亮+自動縮排+函式自動補全+變數/函式的跟蹤+列出原始碼中的函式/變數等
用到的工具有:Vim+.vimrc配置檔案+code_complete+ctags+taglist+cscope


使用效果:http://files.myopera.com/mbbill/files/code_complete.gif (亦在本文末尾處)
PS:這個效果非常炫的!~
這裡不詳細介紹Vim的各個外掛的快捷鍵使用,只是列舉一下自己的常用用法,也算個筆記吧。後面會有轉載幾篇文章詳細描述各個外掛的詳細情況(太多了,其實我也記不住)。

vim 下載地址:http://www.vim.org
code_complete.vim外掛http://www.vim.org/scripts/script.php?script_id=1764
ctags 一般安裝完vim後都會有,ubuntu中好像是沒附帶安裝,需要下載:http://www.vim.org/scripts/script.php?script_id=610
taglist 下載:http://www.vim.org/scripts/script.php?script_id=273
cscope 到其主頁下載:http://cscope.sourceforge.net/
Ubuntu下安裝這些包的命令為:

123sudo apt-get install vimsudo apt-get install ctags(exuberant-ctags)sudo apt-get install cscope


一. vim 基本配置
1、配置檔案的位置
在目錄 /etc/ 下面,有個名為vimrc的檔案,這是系統中公共的vim配置檔案,對所有使用者都有效。而在每個使用者的主目錄($HOME)下,都可以自己建立私有的配置檔案(僅對這個使用者有效),命名為:“.vimrc”。例如,/root目錄下,通常已經存在一個.vimrc檔案。我就是在自己的$HOME目錄下新建了了.vimrc檔案來配置的。
2、設定語法高亮顯示
1) 開啟.vimrc,新增以下語句來使得語法高亮顯示:
syntax on
2) 如果此時語法還是沒有高亮顯示,那麼在/etc目錄下的profile檔案中新增以下語句:
export TERM=xterm-color
3、設定C/C++自動縮排(新增以下set語句到.vimrc中)
1)不討論製表符寬度為8還是為4個空格較好,這裡設定(軟)製表符寬度為8(Linus在規定Linux kernel中C程式碼的風格):
set tabstop=8
set softtabstop=8
2)設定縮排的空格數為8
set shiftwidth=8
另外,“set expandtab”選項會將TAB展開(被替換)為對應個數的空格,我一般不推薦設定這個選項。
3)設定自動縮排:即每行的縮排值與上一行相等;使用 noautoindent 取消設定:
set autoindent
4)設定使用 C/C++ 語言的自動縮排方式:
set cindent
5)設定C/C++語言的具體縮排方式(如下設定,僅作參考):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
6)如果想在左側顯示文字的行號,可以用以下語句:
set nu
PS:自動縮排有兩個選項:”set autoindent” 與 “set cindent”.
autoindent 就是自動縮排的意思,當你在輸入狀態用回車鍵插入一個新行,或者在 normal 狀態用 o 或者 O 插入一個新行時,autoindent 會自動地將當前行的縮排拷貝到新行,也就是“自動對齊”,當然了,如果你在新行沒有輸入任何字元,那麼這個縮排將自動刪除。
cindent 就不同了,它會按照 C 語言的語法,自動地調整縮排的長度,比如,當你輸入了半條語句然後回車時,縮排會自動增加一個 TABSTOP 值,當你鍵入了一個右花括號時,會自動減少一個 TABSTOP 值。

二. code_complete 配置
把下載的code_complete.vim拷貝到plugin目錄下,一般都在(我的是)/usr/share/vim/vim72/plugin下 (不同的vim版本vim72可能時其他,我的目前時7.2版本)
在vim中使用鍵就可以補全函式原型了。具體補全的快捷鍵的定義(如in代表#include ” “),見:code_complete.vim檔案中的定義。

三. ctags的使用
用ctags命令生成tags檔案,ctags -R –c-kinds=+p –fields=+S /usr/include 應該算是建立索引表(預設會在當前目錄生成tags檔案),然後把生成的tags檔案拷貝到你程式設計的目錄。
注意:ctags -R 後面不加上絕對路徑,就時建立當前目錄的下所有檔案的索引,那麼建立的索引檔案中都是寫的相對路徑,你將tags檔案拷貝到其他目錄去用時,它就會找不到相應的函式/變數等。
注意:執行vim的時候,必須在”tags”檔案所在的目錄下執行。否則,執行vim的時候還要用”:set tags=”命令設定”tags”檔案的路徑,這樣vim才能找到”tags”檔案。
“-R”表示遞迴建立,也就包括原始碼根目錄下的所有子目錄下的源程式。
“tags”檔案中包括這些物件的列表:
用#define定義的巨集
列舉型變數的值
函式的定義、原型和宣告
名字空間(namespace)
型別定義(typedefs)
變數(包括定義和宣告)
類(class)、結構(struct)、列舉型別(enum)和聯合(union)
類、結構和聯合中成員變數或函式

VIM用這個”tags”檔案來定位上面這些做了標記的物件,下面介紹一下定位這些物件的方法:
1) 用命令列。在執行vim的時候加上”-t”引數,例如:
[/home/admin/src]$ vim -t foo_bar
這個命令將開啟定義”foo_bar”(變數或函式或其它)的檔案,並把游標定位到這一行。
2) 在vim編輯器內用”:ta”命令(是”tag”命令的縮寫),例如:
:ta foo_bar
3) 最方便的方法是把游標移到變數名或函式名上,然後按下”Ctrl-]”。用”Ctrl-o”退回原來的地方。
在Vim中執行“:help tags”可以查詢到ctags的用法。

四. cscope的配置與使用
可以從http://cscope.sourceforge.net/下載最新的cscope原始碼,對其進行編譯和安裝是比較簡單的,如下所示。

1 2 3 4 5 [root@jay-linuxcscope-15.8a]# ./configure [root@jay-linuxcscope-15.8a]# make [root@jay-linuxcscope-15.8a]# make install [root@jay-linuxcscope-15.8a]# /usr/local/bin/cscope --version /usr/local/bin/cscope:version15.8a

也許在“make”編譯是可能會報一些語法的錯誤,比如curses.h檔案沒找到,就需要安裝“ncurese-dev”這個軟體包。
在需要建立cscope索引的原始碼目錄下,執行“cscope -Rbq”(我常用的)命令即可生成cscope索引。
然後用Vim開啟一個c源程式檔案,在vim中執行命令“:cs add cscope.out”來載入索引檔案(如果執行Vim時所在目錄中就有cscope.out,則Vim會自動載入cscope索引)。使用“cs”開頭的命令(如常見的“:cs fine XX YY)就可以使用強大的cscope功能了。
對於“cs find”支援的查詢命令簡單描述如下:

12345678s:查詢C語言符號,即查詢函式名、巨集、列舉值等出現的地方g:查詢函式、巨集、列舉等定義的位置,類似ctags所提供的功能d:查詢本函式呼叫的函式c:查詢呼叫本函式的函式t:查詢指定的字串e:查詢egrep模式,相當於egrep功能,但查詢速度快多了f:查詢並開啟檔案,類似vimfind功能i:查詢包含本檔案的檔案

例如:”:cscope find s kvm_assign_device”、”:cs f g kvm_assign_device”、”:cs f d kvm_assign_device”等等(注:cscope命令縮寫為cs,而fine縮寫為f)。

在vim中,執行“:cs help”命令可以顯示cscope的命令幫助手冊。

ctags和cscope在Linux世界中是非常流行的,在Linux kernel中的Makefile就專門定義了“tags”和“cscope”這兩個目標的,可以直接“make tags”生成tags檔案,可以直接“make cscope”生成cscope索引檔案,如下所示。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@jay-linuxlinux.git]# make help | grep -E '(tags|cscope)' tags/TAGS-Generatetagsfileforeditors cscope-Generatecscopeindex gtags-GenerateGNUGLOBALindex [root@jay-linuxlinux.git]# make tags GEN    tags [root@jay-linuxlinux.git]# ll tags -rw-r--r--1rootroot138602743Oct1914:10tags [root@jay-linuxlinux.git]# make cscope GEN    cscope [root@jay-linuxlinux.git]# ll cscope.* -rw-r--r--1rootroot652930Oct1914:10cscope.files -rw-r--r--1rootroot267625646Oct1914:11cscope

相關推薦

VIM:打造LINUX程式設計師編輯利器(CTAGS+CSCOPE+TAGLIST+CODE_COMPLETE)

http://smilejay.com/2012/10/vim-for-linux-programmer/ 在2年前,寫過一篇文章“Vim:打造Linux C/C++程式設計師的編輯器”,先在根據這兩年的Vim使用經驗對其進行一些補充和完善,以便在使用Vim時(偶爾忘

最受Linux程式設計師歡迎的7個程式碼編輯器的介紹及下載地址

Linux程式設計師經常抱怨,自從他們使用了免費開源的系統平臺後,作為一名程式設計師,卻並沒有在程式碼編輯器上得到足夠的重視。他們往往會認為Linux平臺上的程式碼編輯器太少了,以至於影響他們的程式設計工作。但是事實並非如此,在Linux平臺上有太多的程式碼編輯器供你使用了,下面我們分享了7個最受Linu

使用vim打造自己的python編輯

sts 手動 comment rep park nts 文件添加 mar abs 基礎配置 vim的配置是在用戶主目錄下的 ~/.vimrc 文件中完成的,如果沒有的話,需要自己新建一下: 1 2 cd ~ touch .vimrc 首先

一個合格Linux程式設計師應該知道的名詞

【匯流排】:     計算機,各個部件之間傳送資訊的公共通路。計算機以匯流排來連線各個功能部件的。它是cpu、記憶體、輸入、輸出裝置傳遞資訊的公用通道。     如果將主機板(Mother Board)比作一座城市,那麼匯流排就像是城市裡的公共汽車(bus),能按照固定行車

Linux 程式設計師的自我修養:玩轉 GDB 除錯

我從學生時代到進入軟體開發這個行業,不知不覺已經十餘年了。這些年,先後在網遊公司做過遊戲伺服器,為上海某交易所做過金融交易系統、在金融證券公司做過股票證券交易系統和即時通訊軟體、在音視訊直播公司做過直播伺服器,各種專案使用的伺服器作業系統都是 Linux,開發語言是 C/C++。 正如從

中國Linux程式設計師生存現狀

《程式設計師》記者/閆輝 Linux,在很多人看來,是一個既熟悉又陌生的名詞,好像時時在我們的周圍,但又抓不到它真實的一面。在我們的印象中,Linux同著網路經濟的泡沫息息相關。隨著網路經濟的江河日下,Linux的聲音也低沉了下來,只是偶爾揮動幾下手臂,便又消失的無影無蹤。不

做10年Windows程式設計師與做10年Linux程式設計師的區別

如果一個程式設計師從來沒有在linux,unix下開發過程序,一直在windows下面開發程式, 同樣是工作10年, 大部分情況下與在linux,unix下面開發10年的程式設計師水平會差別很大。我寫這篇文章並不是想貶低windows下面開發的人,做windows開發的人看

JetBrains的CLion,C++的IDE,給linux程式設計師的福音

CLion的主要亮點: windows下linux程式的IDE。別糾纏vs是不是王中之王,用vs開啟srs程式碼錯誤就一坨一坨的,沒法正常使用。可以忽略編譯,當作編輯器使用。windows下的linux程式碼無法編譯過,mingw有時也不好使,但是CLion可以當作編

《傳智播客全方位打造“1024程式設計師節”,致敬百萬程式設計師

2017年是傳智播客創辦1024程式設計師節的第三年,希望以節日的形式,向那些用技術和創新改變世界的程式設計師們致敬,同時提升程式設計師群體的社會關注度。 今年的節日玩法更為豐富,線上線下遙相呼應,並聯合了摩拜共享單車、外設品牌達爾優等國內知名品牌共同參與,燃爆程式設計

Ubuntu程式設計師程式設計利器

Ubuntu 環境下安裝軟體列表如下 android 環境搭建:     adb  <=== @   android連結usb和裝置管理工具:     開發平臺:      sdk,   <== @軟體開發工具.      ndk,  <==  @ 本地開

Linux程式設計師福音】在Visual Studio上用C++寫Linux

如今我們正在開發一個新的外掛,一個能夠讓開發者在(以下簡稱 VS ) 上建構能夠在 Linux 上執行 C++ 程式的套件。開發者可以藉由這個外掛將 C++ 程式移轉到 Linux 伺服器、PC 以及移動裝置上,也同時可以藉由這個外掛將這些機器連結至你的 VS 上。 V

就業困惑!Linux程式設計師的就業方向

下面的來自一個網文,你看看吧 應該對你有用!寫給C語言初學者的話!:: 前些天我寫了一篇“Unix C語言值得注意的地方”一貼,回貼中談到學習國外的開源軟體中的高質量程式碼的問題,但是有朋友跟我說,在看程式碼的過程中感覺難度很大,想想也是如此,動輒十幾萬行的程式如果沒有人指點的話是很難找到切入點的,所以我撰寫

10年 Windows 與 Linux 程式設計師的區別

如果一個程式設計師從來沒有在Linux、Unix下開發過程序,一直在Windows下面開發程式,

windows下gvim+ctags+cscope+taglist

下載 ----------------------------------- 下載cscope15.6-win32.zip 安裝 ----------------------------------- 安裝很簡單,只要將cscope的可執行檔案放到PATH環境變數包含的目錄中即可。 (1) 推薦Windo

java程式設計師菜鳥進階(十六)linux基礎入門(四)linuxVIM文字編輯器使用

  linux下編寫配置檔案最好的編輯工具莫過於vim了。Vim的功能實在太多太全,Vim的很多功能也許我們很少用得到,真正為大家常用的功能可能只佔到所有功能的冰山一角。Vim終歸只是一個編寫程式碼或編輯文件的工具,所以只要掌握一些足夠我們使用的功能即可。 做個廣告

Linux常用命令、vim打造python編輯器、網路配置

VirtualBox5.1及Ubuntu16.04安裝教程:http://jingyan.baidu.com/article/46650658228345f549e5f8cc.html 一、常用命令 1.啟動圖形介面:startx 2.立刻關機:shutdown -h now

Linux 基本命令 vim程式設計師 Linux基本命令

檢視命令 ls    檢視目錄檔案 ls  -la  檢視所有目錄(包括隱藏檔案) stat  檔案(目錄)  檢視檔案(目錄)的詳細資訊 lsattr  檔案    檢視檔案的隱藏屬性 . 當前目錄 .. 上一層目錄 - 前一個工作目錄

Linux - Vim vim程式設計師

vim與程式設計師   所有的 Unix Like 系統都會內建 vi 文書編輯器,其他的文書編輯器則不一定會存在。

程式設計師分享Linux重器vi編輯

建立練習檔案 [root@tianyun ~]# ll -a > list.txt 檔案編輯器 gedit 檔案編

Linux-文本編輯工具vim

tab 單位 ctrl 字符串 如果 png 修改 table 知識點 在筆者看來vi 和vim最大的區別就是編輯一個文本時,vi不會顯示顏色,而vim會顯示顏色。顯示顏色更易於用戶進行編輯。其他功能沒有什麽區別。所以在linux系統下,使用vi還是vim完全取決你的個人愛