1.vim结构定义跳转
1.1安装的软件
sudo apt-get install vim exuberant-ctags
1.2vim基本配置~/
set ruler
set nocompatible
syn on
set tabstop=4
set cindent shiftwidth=4
set smartindent
set fileencodings=utf8,gbk
set backspace=indent,eol,start
autocmd Filetype c set omnifunc=ccomplete#Complete
autocmd Filetype cpp set omnifunc=cppcomplete#Complete
第 1 行用来打开标尺(显示当前光标所在位置)。
第 2 行把 vim 设置成与旧的 unix 版本 native vi 不兼容。
第 3 行打开语法高亮显示。
第 4 行设置 tab 的宽度。
第 5、6 行设置缩进。
第 7 行把 vim 设置为能够自动识别 utf8 和 gbk 两种 encoding 的文件。
第 8 行设置退格键。
最后两行仅对 vim 7.0 以上版本有效,是用来设置自动补全的。
1.3.和 ctags 配合使用
(1) 生成 ctags:
在操统作业代码树的根部,执行
ctags -h=.h.c.S -R
这表示,递归为整个目录树中的 .h,.c,.S 文件建立tag。执行完这段代码以后
,我们可以发现,当前目录下多了一个 tags。例如对于proj4,目录树下的文件将是:
boot/ conf/ inc/ lib/ proj4-handin.tar.gz user/
CODING GNUmakefile kern/ mergedep.pl tags
~~~~
(2) 与 vim 配合使用:
vim 会自动识别当前目录(注意,只是当前目录)下的 tags文件,然后加以利用。怎
样使用呢?举个例子来说,例如我们在代码树根部执行
vim kern/trap.c
然后找到这一段:
void
print_regs(struct PushRegs *regs)
{
cprintf(" edi 0x%08x\n", regs->reg_edi);
cprintf(" esi 0x%08x\n", regs->reg_esi);
cprintf(" ebp 0x%08x\n", regs->reg_ebp);
...
}
把光标移动到 cprintf 上,然后按下 ctrl +],可以看看发生了什么?
注:
1. 对函数、struct 和变量按下 ctrl +],会令光标定位到它们的定义(而非声
明)处。
2. 对 #DEFINE 出来的宏定义,按下 ctrl + ],会令光标定位到它们的#DEFINE
处。
3. 这个功能可以跨文件使用,例如 cprintf 的定义在 printf.c里,光标会移到
printf.c中去。但是这要求你当前所在的文件自从上次保存以来,就没有被修改过。所以
,按下 ctrl + ] 之前,最好要保存文件,否则 vim会给出提示,告诉你操作失败。
4. 定位了一个函数以后,再想回到原来的光标所在处,怎么办?按 ctrl +t(来
自 fishy)。
5. 以上所有的快捷键都只能在普通模式下(非插入、非改写)使用。
6. vim 只会在当前目录下查找 tags 文件,因此如果你在先 cd kern,再vim tr
ap.c就不能使用 tags 了。
5. 自动补全
在 vim中,如果你只记得一个函数、变量、常量、宏定义的前半部分,可以按ct
rl + p(就在插入模式下按),vim 会自动根据你 include的头文件里寻找匹配的项,做
成下拉菜单让你选择。
例如,我们建立这样一个文件 test.c:
#include <stdio.h>
int main() {
prin
这时按下 ctrl + p,vim 会给出一个列表,告诉你备选项:
prin
--------------------------------------
| printf /usr/include/bits/types.h |
| printing /usr/include/wctype.h |
| prints /usr/include/getopt.h |
--------------------------------------
虽然这个在类型判断上面比 VC 等等的 IDE弱智了许多,但是有时仍然很有用 :)
2.taglist
2.1安装:
(1)首先, 下载taglist安装包(taglist_45.zip):
http://www.vim.org/scripts/script.php?script_id=273
然后拷贝到 /root/.vim 目录下解压:
mailto:root@ubuntu:~/.vim# unzip taglist_45.zip
会在.vim 目录下生成两个目录:doc 和 plugin
(2)修改/etc/vim/vimrc文件:
在vimrc 文件最后添加以下两句话:
let Tlist_Ctags_Cmd="/usr/bin/ctags"
let Tlist_Inc_Winwidth=0
要注意上次我们ctags的目录为:/usr/local/bin/ctags
(3)使用方法
然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下运行命令:
[root@localhost mde-1.3.0]#ctags -R
此时在当前目录下会生成一个tags 文件
[root@localhost mde-1.3.0]#cd same/
[root@localhost same]#vim same.c
再在vim中运行命令:
:TlistToggle
会出现如下窗口: