使用vim阅读linux源码

source insight是windows下的优秀编辑器,适合阅读管理代码,主要有以下功能:

(1)查找函数、变量或者宏的定义

(2)查找函数、变量或者宏的引用位置

(3)查找某个符号在工程内的所有匹配

由于unix哲学主张一个工具只做好一件事情,所以这里使用vim来阅读Linux源码

1.vim

#yum search vim //查看vim相关软件信息

#yum install -y vim* //在线安装vim

(1)~/.viminfo

在vim中操作的行为,vim会自动记录下来,保存在~/.viminfo文件中。这样为了方便下次处理,如:vim打开文件时,光标会自动在上次离开的位置显示。原来搜索过的字符中,重打开文件时自动显示。~/.viminfo文件是系统自动生成的。

(2)/etc/vimrc

vimrc文件是vim的环境设置文件。整体的vim的设置在/etc/vimrc文件中。不建议修改/etc/vimrc文件,每个用户可以在用户根目录设置vim,新建~/.vimrc 。

(3)~/.vimrc

 

2.ctags

ctags插件用来查找函数、变量或者宏的定义。在源文件目录下执行

ctags -R

会生成一个tags文件,里面包含了所有源文件的符号信息。在vim中,快捷键ctrl+]会跳到当前函数的定义处。如果项目有多层文件结构,一般只在根目录生成一个tag文件,那么子目录访问不到tag文件,一个方便的做法是在.vimrc中将tag加到tags查找路径中。

set tags+=/project1/tags

3.cscope

4.taglist

source insight左边是当前文件的所有符号窗口,包括include的头文件、函数和变量。这个功能可以由taglist实现。

5.NERDTree

source insight右边是文件列表窗口,显示了工程的所有文件名。NERDTree具有类似的功能,该插件可以显示当前目录下所有文件和目录,并方便地浏览和操作文件。

6.winmanager

为了像source insight一样同时显示多个窗口,需要winmanager插件。

7.MiniBufExplorer

写程序的时候肯定会多个源文件同时编辑,像source insight就有个window list,保存了最近打开过的所有源文件。

8.OmniCppComplete

大部分IDE都支持自动补全功能,vim作为linux下优秀的编辑器当然不缺少,不过vim自带的补全功能,ctrl+n, ctrl+p可以再当前源文件中实现简单的补全,OmniCppComplete利用了Ctags生成的tag数据库,实现了文件间名字补全,包括:

  • 命名空间、类、结构、联合
  • 函数属性成员和返回值类型补全
  • this指针成员补全
  • c/c++类型转换对象补全
  • 类型字义和匿名类型补全

安全好后,输入ctrl+x ctrl+o就会补全当前名字,如果需要tab键达到这个补全功能,需要supertab插件。

9.surround

在编程时会遇到大量的匹对符号,如“,){”等等,高效地处理这些符号可以大大地提高编程效率,surround正是处理这些符号的非常 优秀的插件。

实践

1.建立索引

ctags -R

cscope-indexer -r

2.在vim中使用ctag

(1)跳转到指定的函数进入vim,用.tag func_name跳到func_name处。使用tag命令时,可以使用TAB键进行匹配查找,继续按TAB键向下切换。

(2)用ctrl+]快捷键,跳转到光标所在函数标识符的定义处理

(3)ctrl+T退回上层

3.在vim中使用cscope

其实是在cscope中使用vim,执行$cscope,选择想要打开的文件,输入前面序号即可在vim中打开它,之后就可以在vim中使用ctags快速在函数间跳来跳去。

ctrl+d退出cscope。

参考:https://blog.csdn.net/niepangu/article/details/52888116

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

 

展开阅读全文

没有更多推荐了,返回首页