linux开发环境

来源:互联网 发布:时间悖论 知乎 编辑:程序博客网 时间:2024/06/06 10:03
前只是少少的使用过vi,cscope,taglist和sourceNav,用的都不怎么熟悉。这次先了解一下目前Linux下流行的开发环境(参考1),最后还是决定以vi为基础构造我的Linux开发环境。“VIM或EMACS做编辑器,GCC做编译器,automake做工程,doxygen做文档,cvs做管理”,这大概也是我希望的吧。
另外有人提到svn,说是cvs的替代者,有机会可以看看http://www.linuxfromscratch.org/blfs/view/svn/basicnet/subversion.html。

安装步骤
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参数。还可以建立$HOME/.vim目录,把自己要加的东西都放到这里。
-------------------------
使用gvim或者vim -g可以启动图形界面的vim。
-------------------------
VIM比如Ctrl-N可以实现自动补全,[I 可以查看光标所在处的函数的声明,Ctrl-]跳转到函数声明所在的文件,gd则是在当前文件跳转到局部变量的声明处。
-------------------------
特别提到:基于ref6写一个Search_Word.vim的时候,使用下面这句话来实现在所有子目录下的.h, .c中搜索指定word:
exe "grep -R --include='*.[ch]'" w "*"
-------------------------

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
就可以看见了
-------------------------

CPPComplete
-------------------------
用于自动补全的插件,但我现在用^x+^o代替了它的功能。
默认键是:
Alt+Lin insert mode will try to find the possible completions and displaythem in a popup menu. Also normal completions to the names incppcomplete.tags.
Alt+j in insert mode will show the popup menu with the last results. Selecting one of the  items will paste the text.
F8/F9 will work in a similar way as Ctrl+N, Ctrl+P in unextended vim so the script can be used without the popup menu.
F5 in insert mode will lookup the class and display it in a preview window。
但是这些F*都被我定义作它用了,只能用alt+L,alt+J。
-------------------------

参考文档
1. 大型linux C /C++项目是用什么编辑器的?
http://www.linuxsir.org/bbs/showthread.php?t=235116

2. vim + ctags + taglist + cscope + cppcomplete + global 使用初探
http://www.linuxsir.org/bbs/showthread.php?t=241578

3. 用VIM编写C/C++程序
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=85007

4. cscope for VIM manual
http://vimcdoc.sourceforge.net/doc/if_cscop.html

5. VIM资源大全,特别列出了很多有用的plugin的描述
http://www.ixman.net/blog/user1/3/archives/2006/685.html

6. 用vim替代source insight。写的很好,我基本按照他的来的
http://forum.ubuntu.org.cn/trackback.php?e=1720