之前只是少少的使用過vi,cscope,taglist和sourceNav,用的都不怎麼熟悉。這次先了解一下目前Linux下流行的開發環境(參考 1),最後還是決定以vi為基礎構造我的Linux開發環境。
“VIM或EMACS做編輯器,GCC做編譯器, automake做工程,doxygen做文檔,cvs做管理”,這大概也是我希望的吧。另外有人提到svn,說是cvs的替代者。
安裝步驟
1. 安裝gcc等;
done in 《Ubuntu安裝筆記》.
2. 升級vi到vim;
done in 《Ubuntu安裝筆記》.
3. 安裝ctags;
#sudo apt-get install ctags
4. 安裝ctaglist;
http://www.vim.org/scripts/script.php?script_id=273
5. 安裝cscope;
#sudo apt-get install cscope
6. 安裝global;
#sudo apt-get install global
7. 安裝cppcomplete
http://www.vim.org/scripts/script.php?script_id=273
工具簡介(參考2)
總體使用的感覺定位查找類型定義基本可以用,但自動補全類型方面由於ctags的功能有限,感覺在大工程時,不一定很好用。
大型程序一定要global的參與,它的分析比較全面,但在vim中的提示信息有限。
taglist 精干,需要ctags的支撐 ,直接可以在左邊列出函數列表,全局參數列表。(可以排序)
cscope 比較強大,可以對函數以及部分類型定義進行跳轉,但有些BUG,好像在某些條件下無法正確找到分析枚舉的定義。
cppcomplete 需要ctags的支撐,可以補全類型或者函數名(可不是普通Ctrl+P/N的那種)
global 新版本可以嵌入vim使用,提供比較完整解析和類型索引,和cscope比,稍微差些的就是對類型引用的打印列表中沒有標識這個引用在什麼函數中進行的。其實我的感覺global可能不是為vim所生,它的主要目的是用html的方式進行表達相關的關聯關系和索引,使用起來感覺沒有cscope的那麼貼切。
VIM
VIM在本機上被安裝到/usr/share/vim/vim70目錄下(用$VIM代指)。可以通過修改$VIM/plugin, $HOME/.vim下的文件內容和$HOME/.vimrc來配置VIM參數。
使用gvim或者vim -g可以啟動圖形界面的vim。
VIM比如Ctrl-N可以實現自動補全,[I 可以查看光標所在處的函數的聲明,Ctrl-]跳轉到函數聲明所在的文件,gd則是在當前文件跳轉到局部變量的聲明處。
CtagList
在VIM中用
":TlistToggle" command to open/close the taglist window.
":help taglist" command to get more information about using the taglist plugin.
Ctags
Q:如何看到標准庫文件中的定義?
A: 在你的目錄下建一個鏈接到標准庫的源代碼,然後
ctags -R *
vi -t printf
就可以看見了。