本文介绍一种用于linux内核驱动开发或linux内核源码阅读的vim环境配置。用到的几款插件包括:cags、cscope和taglist。其中,ctags主要用于查找函数的定义;taglist基于ctags和vim的一款插件,主要用于实现右侧的文件目录导航;cscope主要用于对函数的定义、调用关系等进行查找。下面详细介绍搭建过程:
ctags -R。会在当前目录下面生成tags文件。~/.vimrc,添加刚才生成的tags文件。set tags=***/tags:set tags=***/tagsctags -R,但正在编辑的vim不用重新启动, 它可以实时读取最新的tags文件源码下载:http://www.vim.org/scripts/script.php?script_id=273
安装:在 ~/.vim 目录下解压taglist_xx.zip
说明文档:在vim命令行键入:help taglist.txt
配置
打开~/.vimrc
添加如下语句
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
此时,利用vim打开一个文件后,命令行键入:Tlist

安装:
sudo apt install cscope./configure)、编译(make)和安装(make install)。配置:
~/.vimrc中添加一句set cscopequickfix=s-,c-,d-,i-,t-,e-,用来设定是否使用 quickfix 窗口来显示 cscope 结果cscope -Rbqk。此后会生成三个文件:cscope.in.out、cscope.out和cscope.po.out
:cs add 项目顶层目录绝对路径/cscope.out 项目顶层目录绝对路径。也可以将该语句添加到.vimrc环境中使之自动加载。使用
查找函数的定义::cs find g func_name
查找函数被调用的情况::cs find c func_name,按下回车后vim会自动跳转到第一个符合要求的地方
:cw命令打开QuickFix窗口。cscope的主要功能是通过子命令"find"来实现的,即:cs find [cdefgist] name
| 0 或 s | 查找本 C 符号(可以跳过注释) |
|---|---|
| 1 或 g | 查找本定义 |
| 2 或 d | 查找本函数调用的函数 |
| 3 或 c | 查找调用本函数的函数 |
| 4 或 t | 查找本字符串 |
| 6 或 e | 查找本 egrep 模式 |
| 7 或 f | 查找本文件 |
| 8 或 i | 查找包含本文件的文件 |
Cscope的帮助手册中推荐了一些快捷键的用法, 将下面的内容添加到~/.vimrc中, 并重启vim
nmap <C-_>s :cs find s <C-R>=expand("" )<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("" )<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("" )<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("" )<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("" )<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("" )<CR><CR>
nmap <C-_>i :cs find i ^<C-R>=expand("" )<CR>$<CR>
nmap <C-_>d :cs find d <C-R>=expand("" )<CR><CR>
ind d =expand(“”)
```
- 当光标停在某个你要查找的词上时, 按下g(先按"Ctrl+Shift+-", 然后很快再按"g") ,就是查找该对象的定义。
:cs reset