空口无凭,先放一张配置好的 vim 图。
左侧是目录树,右侧是函数列表,中间是代码阅读区,下面则是代码区光标指向的函数出处。
这样的 vim 乃至有点像 sourceInsight 了。

下面说说如何从头配置。

ctags 和 cscope

在 ubuntu 下,安装这两个工具是非常大略的,只须要实行下面两条命令:

php阅读器源码linux进修9查看源码端赖它了五分钟把vim打造成代码浏览神器 jQuery

# sudo apt-get install ctags# sudo apt-get install cscope

ctags 支持大多数编程措辞,对付 C 措辞来说,它可以解析 C 措辞函数,变量,宏定义等符号。
合营 vim 利用,可以从函数调用处一键跳转到函数定义处,非常的方便。
但是 ctags 也有一些不敷,例如只能单方向搜索,无法搜索调用的函数,无法搜索调用该函数的函数,以及该函数调用的函数。
cscope 类似于 ctags,它可以填补 ctags 的不敷,二者合营利用,足以将 vim 打造成 IDE。

安装好这两个工具后,须要天生匹配 linux 内核源码的数据库。
这一过程也是大略的,由于下载的 linux 内核天生支持这两个插件,以是只需实行几条命令就可以了:

# cd linux-2.6.26# make ctags ARCH=x86_64# make cscope ARCH=x86_64

由于 linux 的内核源码支持多种架构,以是在天生 ctags 和 cscope 的数据库时,指定了 ARCH,由于我们编译的内核便是 x86_64 架构的,往后阅读内核源码,也只关心 x86_64 架构的。

至此,就创建好了剖析 linux 内核源码的数据库,实际上,在 vim 编辑器内直接输入 ctags 和 cscope 的命令,就能够剖析代码了。
但,如果不太熟习 ctags 和 cscope 的命令,能不能更大略呢?当然可以,vim 有着丰富的插件,请连续往下看。

下载和安装 vim 插件

要实现开头展示的那种效果,须要借助 Source Explorer,NERD Tree,Tag List 插件。
这几个插件都可以免费从官网下载:

依次点击 Script->Browse all 菜单,可以找到搜索框:

以 NERD Tree 插件为例,点击搜索结果,即可到达插件的下载目录,该网页也包含插件的利用解释:

下载后,进入 ~ 目录建立 .vim/plugin 目录:

# cd ~# mkdir .vim# mkdir .vim/plugin

将下载好的插件复制到 .vim 目录,达到如下效果:

# cd .vim# ls NERD_tree.zip plugin SrcExpl-6.0.zip taglist_46.zip

然后依次解压插件:

# unzip xxx.zip

全部完成后,在 plugin 目录下天生下面三个文件,就算这三个插件安装好了。

配置 vim 插件

紧张是配置 vim 的配置文件 vimrc,首先创建这个文件:

# cd ~# touch .vimrc

配置内容则可以参考对应插件的解释文档,以 Source Explorer 插件为例,它的下载页面的解释如下图:

以是,在 vimrc 中,我们填写的内容如下:

nmap <F8> :SrcExplToggle<CR>nmap <C-J> <C-W>hnmap <C-K> <C-W>jnmap <C-I> <C-W>knmap <C-L> <C-W>llet g:SrcExpl_winHeight = 8let g:SrcExpl_refreshTime = 100 \公众mslet g:SrcExpl_jumpKey = \公众<ENTER>\"大众let g:SrcExpl_gobackKey = \"大众<SPACE>\"大众let g:SrcExpl_isUpdateTags = 0

其他插件的配置内容也可以查询它们的官方手册,终极全部的配置如下

配置好 vimrc 文件,保存退出,打开 vim,依次按 F7, F8, F9 打开刚刚安装好的插件,看看 vim 现在是不是像 IDE 一样了?

利用配置好的 vim 查看 linux 内核源码

可以首先从左侧的目录树找到 linux 内核源码所在文件夹,按 Enter 选中想看的文件,然后从右侧的函数列表选中关心的函数,即可在代码区看到源码了。

下侧是被调用函数的出处。
例如,start_kernel 函数调用了 lockdep_init() 函数,把光标移到 lockdep_init() 函数,则下侧窗口就会显示出 lockdep_init() 函数的出处(定义)。
此时,可以从下侧窗口进入 lockdep_init() 函数的定义处。

如果想返回 start_kernel 函数,只须要按空格就可以了。

Enter键进入函数,空格(SPACE)键返回,这两个按键正是在 vimrc 中设置的按键。
查看配置文件也能知道,ctrl+JKIL,分别是向左、下、上、右切换窗口。
如果希望修正按键,可以再修正 vimrc 中的配置。

下面以一张动图结束本节,可以看出,真的很方便。

欢迎在评论区一起谈论,质疑。
文章都是手打原创,每天最浅近的先容C措辞、linux等嵌入式开拓,喜好我的文章就关注一波吧,可以看到最新更新和之前的文章哦。