您的位置:首页 > 其它

vim-打造自己的利器

2012-01-05 10:18 169 查看

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

会出现如下窗口:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: