to myself 的分类学习日志

做自己想做的事
posts - 232, comments - 6, trackbacks - 0, articles - 0

vim_plugin

Posted on 2009-03-05 15:34 kongkongzi 阅读(353) 评论(0)  编辑 收藏 引用 所属分类: tools

vim & Cscope,ctags features
Emacs的一些辅助插件:cscope,cedet+ecb,session,doxymacs  (跳转到定义、实现,自动补齐)
配置emacs:在C盘根目录下建立一个.emacs文本文件,输入配置内容。


要为整个系统安装 Vim 还是为单个用户,Vim 安装的路径不同。
 如果你想安装在自己的 home 目录,编辑 Makefile 并查找这样的一行:
        #prefix = $(HOME)
 把行首的那个 # 去掉。
    当你要为整个系统安装的时候,Vim 很可能已经为你选择好了一个合适的安装目录。
你也可以照下面讲的自己选择一个,但你必须先改变身份为 root。
/usr/share/vim/vim70/plugin
/usr/share/vim/vim72/plugin
/usr/local/share/vim/vim71/plugin
$$HOME/.vimrc
cp /usr/local/share/vim/vim64/vimrc_example.vim ~/.vimrc

PS:在~/.vimrc添加亦可.
let Tlist_Ctags_Cmd = "/usr/local/bin/exctags"
Ubuntu下的C/C++环境搭建:vim + engspchk(英文拼写检查),calendar(日历显示),project(文件的“项目”管理), taglist(源代码结构浏览),cvsmenu(CVS集成),doxygen(文档注释语法加亮),matrix(!)。
vim+ctags+taglist+cscope+cppcomplete+global
“:Project”即可打开一个用户的“项目文件”(~/.vimprojects)。项目文件采用普通的文本文件的形式,非常易于浏览和修改。
cppcomplete 需要ctags的支撑,可以补全类型或者函数名(可不是普通Ctrl+P/N的那种)
ctags -R --c++-kinds=+p --fields=+ia --extra=+q -f ~/.vim/systags /usr/include /usr/local/include


大型程序一定要global的参与,它的分析比较全面,但在vim中的提示信息有限。
taglist 精干,需要ctags的支撑 ,直接可以在左边列出函数列表,全局参数列表。(可以排序)
cscope 比较强大,可以对函数以及部分类型定义进行跳转,但有些BUG,好像在某些条件下无法正确找到分析枚举的定义。
cppcomplete 需要ctags的支撑,可以补全类型或者函数名(可不是普通Ctrl+P/N的那种)
global 新版本可以嵌入vim使用,提供比较完整解析和类型索引,和cscope比,稍微差些的就是对类型引用的打印列表中没有标识这个引用在什么函数中进行的。其实我的感觉global可能不是为vim所生,它的主要目的是用html的方式进行表达相关的关联关系和索引,使用起来感觉没有cscope的那么贴切。

global安装后扩展文件在:
/usr/share/doc/global/examples/gtags.vim.gz
需要拷贝到$HOME/.vim/plugin后解压,解压方法:
gzip -d  gtags.vim.gz

gd转到当前光标所指的局部变量的定义
*  转到当前光标所指的单词下一次出现的地方
#  转到当前光标所指的单词上一次出现的地方
:tag startlist这个命令会找到函数 "startlist",即使该函数是在另一个文件中。
"Ctrl-]", "g Ctrl-]", 用"Ctrl-o"退回原来的地方

Ctags升级后,使用“ctags –R”更新一下标签文件,现在再进入VIM就可以在C程序中全能补全了。我们依旧以VIM 7.0的源代码为例。
例如,我们在VimMain()函数中,输入“gui”三个字符,然后按下“CTRL-X CTRL-O”

omni completion (全能补全)
set tag+=/usr/lib/gcc/i686-pc-cygwin/3.4.4/include
set tag+=/usr/include