方法不一定是最好的,不过是我目前正在用的,感觉还不错,做以记录
(一)需要安装的程序:
1、ctags
在终端下,输入以下代码来安装程序:
yum install ctags
或
sudo apt-get install ctags
之后,从终端进入源码所在的目录,输入ctags -R,会生成一个名为“tags”的文件。
-R 表示递归子目录,
2、cscope
在终端下,输入以下代码来安装程序:
yum install cscope
或
sudo apt-get install cscope
之后,从终端进入源码所在的目录,输入 cscope -Rbq,会在当前目录下生成三个文件:cscope.out、cscope.in.out、cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用”-q”选项生成的,可以加快cscope的索引速度。
-R:
-b:
-q:
同时可以使用选项-k,表示在生成索引文件时,不搜索/usr/include目录。
3、cscope的一些快捷键
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name
0 或 s
1 或 g
2 或 d
3 或 c
4 或 t
6 或 e
7 或 f
8 或 i
(二)vim需要安装的插件:
1、taglists
下载地址:
http://www.vim.org/scripts/script.php?script_id=273
将下载后的taglist解压,将plugin目录下的taglist.vim录制到/usr/share/vim/vim73/plugin/下,将doc目录下的taglist.txt复制到/usr/share/vim/vim73/doc/下。
进入到/usr/share/vim/vim73/doc/目录,在终端下输入vim进入vim,在正常模式下输入":helptags .",不包括引号,但要注意有一个空格和一个点,表示当前路径。
退回到主目录,打开/etc/vimrc或主目录下的.vimrc,添加以下命令:
nnoremap <F3> :TlistToggle<CR>
关闭vim并再次进入后,按键盘上的F3,即可打开,再按一次关闭。ctrl+w w(两个w)为在窗口间切换
(注:该插件可用tagbar插件替代,为taglist的一个增强版,具体可参考http://www.cnblogs.com/taskiller/archive/2012/08/14/2637689.html)
2、NERDTree
下载地址:
http://www.vim.org/scripts/script.php?script_id=1658
https://github.com/scrooloose/nerdtree
可以与3、winmanager任选其一,也可以都使用,不过据说winmanager不支持列表自动更新,但可以通过设置解决。
下载后解压,将nerdtree_plugin、plugin、syntax三个目录下的.vim文件拷贝到/usr/share/vim/vim73/plugin/目录下。
将doc目录下的.txt文件拷贝到/usr/share/vim/vim73/plugin/目录下。
进入到/usr/share/vim/vim73/doc/目录,在终端下输入vim进入vim,在正常模式下输入":helptags .",不包括引号,但要注意有一个空格和一个点,表示当前路径。
退回到主目录,打开/etc/vimrc或主目录下的.vimrc,添加以下命令:
let NERDTreeWinPos='right'
nnoremap <F2> :NERDTreeToggle<CR>
关闭vim并再次进入后,按键盘上的F2,即可打开类似于IDE窗口的文件浏览器与函数、变量列表,再按一次F2关闭。ctrl+w w(两个w)可以在窗口间切换。
NerdTree的快捷键映射
o.......在已有窗口中打开文件、目录或书签,并跳到该窗口 .....|NERDTree-o| go......在已有窗口中打开文件、目录或书签,但不跳到该窗口 .....|NERDTree-go| t.......在新Tab中打开选中文件/书签,并跳到新Tab .....|NERDTree-t| T.......在新Tab中打开选中文件/书签,但不跳到新Tab .....|NERDTree-T| i.......split一个新窗口打开选中文件,并跳到该窗口 .....|NERDTree-i| gi......split一个新窗口打开选中文件,但不跳到该窗口 .....|NERDTree-gi| s.......vsp一个新窗口打开选中文件,并跳到该窗口 .....|NERDTree-s| gs......vsp一个新窗口打开选中文件,但不跳到该窗口 .....|NERDTree-gs| !.......执行当前文件 .....|NERDTree-!| O.......递归打开选中结点下的所有目录 .....|NERDTree-O| x.......合拢选中结点的父目录 .....|NERDTree-x| X.......递归合拢选中结点下的所有目录 .....|NERDTree-X| e.......Edit the current dif .....|NERDTree-e| 双击......相当于NERDTree-o 中键......对文件相当于NERDTree-i,对目录相当于NERDTree-e D.......删除当前书签 P.......跳到根结点 p.......跳到父结点 K.......跳到当前目录下同级的第一个结点 J.......跳到当前目录下同级的最后一个结点 <C-J>...跳到当前目录下同级的前一个结点 <C-K>...跳到当前目录下同级的后一个结点 C.......将选中目录或选中文件的父目录设为根结点 u.......将当前根结点的父目录设为根目录,并变成合拢原根结点 U.......将当前根结点的父目录设为根目录,但保持展开原根结点 r.......递归刷新选中目录 R.......递归刷新根结点 m.......显示文件系统菜单 cd......将CWD设为选中目录 I.......切换是否显示隐藏文件 f.......切换是否使用文件过滤器 F.......切换是否显示文件 B.......切换是否显示书签 q.......关闭NerdTree窗口 ?.......切换是否显示Quick Help
3、winmanager
下载地址:
http://www.vim.org/scripts/script.php?script_id=95
网站上说只支持到vim6.0,不过我用7.3也能正常使用,没有问题。
下载后,解压,将plugin目录下的三个文件winfileexplorer.vim、winmanager.vim与wintagexplorer.vim复制到/usr/share/vim/vim73/plugin/目录下。
将doc目录下的winmanager.txt复制到/usr/share/vim/vim73/doc/目录下。
进入到/usr/share/vim/vim73/doc/目录,在终端下输入vim进入vim,在正常模式下输入":helptags .",不包括引号,但要注意有一个空格和一个点,表示当前路径。
退回到主目录,打开/etc/vimrc或主目录下的.vimrc,添加以下命令:
let g:winManagerWindowLayout='FileExplorer|TagList'
nnoremap <F2> :WMToggle<CR>
关闭vim并再次进入后,按键盘上的F2,即可打开类似于IDE窗口的文件浏览器与函数、变量列表,再按一次F2关闭。ctrl+w w(两个w)可以在窗口间切换。
4、用过Source Insight的coder应该知道SI有一个很强大的功能,就是它有一个“Context Window”,就是当光标移动到某一变量或函数时,context window会显示出该变量或函数的定义。VIM也可以实现该功能,利用的是一个名叫SrcExpl的插件。
下载地址:http://www.vim.org/scripts/script.php?script_id=2179
该插件只有一个.vim文件,下载后将其放到/uar/share/vim/vim73/plugin/目录下。
打开/etc/vimrc或主目录下的.vimrc,添加以下命令:
"=================== SrcExpl ==================== nmap <F5> :SrcExplToggle<CR> "快捷键映射 let g:SrcExpl_winHeight = 8 "默认高度 let g:SrcExpl_refreshTime = 100 "更新时间(ms) let g:SrcExpl_isUpdateTags = 0 "每次打开SrcExpl时是否更新tags(0为不更新) let g:SrcExpl_updateTagsKey = "<F12>" "更新tags的快捷键
"映射光标在窗口间移动的快捷键
nmap <C-H> <C-W>h
nmap <C-J> <C-W>j
nmap <C-K> <C-W>k
nmap <C-L> <C-W>l