阅读内核代码: vim+Ctags+Taglist+WinManager阅读器。
阅读器的安装:
在Ubuntu上安装vim编辑器: sudo apt-get install vim
配置vimrc文件: ~/目录下
Vim配置文件.vimrc 配置内容: (整体vim参数设置一般放置在.vimrc这个文件,默认不存在,可自行手动创建)
"语法高亮 syntax on "syntax off "高亮度查找 set hlsearch //设置高亮度查找 "设置底色色调 "set bg=dark set bg=light "显示行号 "set number set nu //设置行号 set nonu //取消行号 "自动缩进与C语言风格缩进 set autoindent set cindent "缩进宽度 set ts=4 //设置tab键宽度 "set tabstop=4 set softtabstop=4 set shiftwidth=4 "建议开启expandtab选项,会自动将tab扩展很空格,代码缩进会更美观 set expandtab "set noexpandtab "switch case 对齐风格 set cino=g0,:0 " " taglist " let Tlist_Show_One_File=1 "只显示当前文件的tags let Tlist_WinWidth=40 "设置taglist宽度 let Tlist_Exit_OnlyWindow=1 "tagList窗口是最后一个窗口,则退出Vim let Tlist_Use_Right_Window=1 "在Vim窗口右侧显示taglist窗口" " winManager "let g:winManagerWindowLayout=’FileExplorer|TagList’
1.接下来就是Ctags的安装,当然你也可以是用Ubuntu的自动安装,但是那样不符合我们程序员的性格:
Ctags: 程序中跳来跳去----当光标在某个函数或变量上时, 按下"Ctrl+]", 光标会自动跳转到其定义处; 按<C-T>, 这样又跳回到setmouse()函数被调用的地方
软件包可以在http://ctags.sourceforge.net/下载。
接下来理所当然就是解压缩,以及安装
tar -zxf ctags-5.8.tar.gz
cd ctags-5.8
./configure //配置源码:生成README介绍文档
make
sudo make install //这句是要root权限的
这样就算是安装好了
此时,你再进到你要阅读的源代码目录中去,生成tag文件,就可以使用ctags的功能了!
例如:
cd /media//test
ctags -R *
这步之后,在当前目录下,你就能发现tag文件了!!!
至于tag的用法,网上很多哦!!!
不过还有一个小瑕疵, 你修改程序后, 比如增加了函数定义, 删除了变量定义, tags文件不能自动rebuild, 你必须手动再运行一下命令:
$ ctags -R * |
熟练的使用ctags仅需记住下面几条命:
1.$ ctags –R * ($ 为Linux系统Shell提示符)
2.$ vi –t tag (请把tag替换为您欲查找的变量或函数名)
3.:ts (ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)
4.:tp (tp 助记字:tags preview)
5.:tn (tn 助记字:tags next)
6.Ctrl + ] (跳转到定义处)
7.Ctrl + T (退回至跳转前)
8.:ta x (跳转到符号x的定义处,如果有多个符号,直接跳转到第一处
9.:ts x (列出符号x的定义)
10.:tj x (可以看做上面两个命令的合并,如果只找到一个符号定义,那么直接跳转到符号定义处,如果有多个,则让用户自行选择)
注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:set tag=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件(帚把不到,灰尘不会自己跑掉)。
eg:--------:set tags=/media/sf_share_space/PKU/0B702_ucos3_2014/tags
[快捷方式:通过将该设置语句置于.vimrc文件中,开启Vim时直接启动该设置。]
2.安装Taglist
"Taglist"是一个用来浏览源代码的Vim插件, 这个插件可以让你高效地浏览各种不同语言编写的的源代码, "Taglist"有以下一些特点:
* 在Vim的一个垂直或水平的分割窗口中显示一个文件中定义的tags(函数, 类, 结构,
变量, 等)
* 在GUI Vim中, 可以选择把tags显示在下拉菜单和弹出菜单中
* 当你在多个源文件/缓冲区间切换时, taglist窗口会自动进行相应地更新.
当你打开新文件时, 新文件中定义的tags会被添加到已经存在的文件列表中,
并且所有文件中定义的tags会以文件名来分组显示
* 当你在taglist窗口中选中一个tag名时, 源文件中的光标会自动跳转到该tag的定
义处
* 自动高亮当前的tag名
* 按类型分组各tag, 并且将各组显示在一个可折叠的树形结构中
* 可以显示tag的原始类型和作用域
* 在taglist窗口可选择显示tag的原始类型替代tag名
* tag列表可以按照tag名, 或者时间进行排序
* 支持以下语言的源文件: Assembly, ASP, Awk, Beta, C,
C++, C#, Cobol, Eiffel, Erlang, Fortran, HTML, Java, Javascript, Lisp,
Lua, Make, Pascal, Perl, PHP, Python, Rexx, Ruby, Scheme, Shell, Slang,
SML, Sql, TCL, Verilog, Vim and Yacc.
* 可以很简单的扩展支持新的语言. 对新语言支持的修改也很简单.
* 提供了一些函数, 可以用来在Vim的状态栏或者在窗口的标题栏显示当前的tag名
* taglist中的文件和tags的列表可以在被保存和在vim会话间加载
* 提供了一些用来取得tag名和原始类型的命令
* 在控制台vim和GUI vim中都可以使用
* 可以和winmanager插件一起使用. winmanager插件可以让你同时使用文件浏览器,
缓冲区浏览器和taglist插件, 就像一个IDE一样.
* 可以在Unix和MS-Windows系统中使用
在http://www.vim.org/scripts/script.php?script_id=273上下载taglist_45.zip
安装更是简单,只是复制哦,不过要根据自己机子的情况复制正确哦
unzip taglist_45.zip
此时会解压出来两个目录--doc/,plugin/
将这两个文件分别复制到~/.vim目录下,生成doc/和plugin/
mkdir .vim
cp doc/* ~/.vim
cp plugin/* ~/.vim
然后配置vimrc文件: ~/目录下
vim .vimrc
在.vimrc中加入下面两个设置语句: ( 根据自我需要选择 )
26 let Tlist_Show_One_File=1 "只显示当前文件的tags
27 let Tlist_WinWidth=40 "设置taglist宽度
28 let Tlist_Exit_OnlyWindow=1 "tagList窗口是最后一个窗口,则退出Vim
29 let Tlist_Ctags_Cmd="/home/jiangfan/Downloads/ctags-5.8/ctags"
30 let Tlist_Use_Right_Window=1 “列表放在屏幕的右侧 依据个人习惯
31 let Tlist_File_Fold_Auto_Close=1 “让当前不被编辑的文件的方法列表自动折叠起来, 这样可以节约一些屏幕空间
进到刚才已经tag好的目录: vim
进入vim后用该命令打开或关闭taglist窗口-----------------:Tlist
:tag <你所要查看的函数,或者是结构体,等等> 这样就能自动跳转到那个文件(快速定位)
TagList有一份详细的帮助手册, 用下面的命令打开手册, 好好学习一下吧::help taglist.txt
3.安装winmanager.zip
地址:http://www.vim.org/scripts/download_script.php?src_id=754
安装过程和Taglist 是一模一样的!---解压,复制,路径也是一样的哦……
一切都OK之后,当然还有一步---配置vimrc,不要看到配置的就畏缩哦,很简单的啦:
let g:winManagerWindowLayout=’FileExplorer|TagList’
这样就好了,就把winManager和TagList两个都打开了,多方便哦……
好了,一切OVER,接下来就可以进入源代码目录咯:
vim
:WMToggle //同时把winManager和TagList两个都打开或者关闭
用下面的命令可以调出帮助手册:
:help winmanager |
这样就能得到我们最终的界面了,
4、安装目录树插件NERD tree
安装方法如下:
1.下载插件文件
http://www.vim.org/scripts/script.php?script_id=1658
2. 将文档解压缩至~/.vim目录
VIM的配置文件放在.vimrc(个人的), /etc/vimrc(系统全局的) , 如果根目录中没有.vimrc文件,可以cp /etc/vimrc ~/.vimrc ,在此文件可以 添加个人配置命令。
3. 在vim中 :NERDTree ,就可以列出当前文件的树状结构。
:NERDTree----就可以列出当前文件的树状结构
窗口切换----:ctrl+w+j/k,通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。
NoteFAN
Vim配置文件.vimrc 配置内容:
1 "语法高亮
2 syntax on
3
4 "高亮度查找
5 set hlsearch
6
7 "设置底色色调
8 set bg=dark
9
10 "可随时用退格键删除
11 set backspace=2
12
13 "显示行号
14 set number
15
16 "自动缩进与C语言风格缩进
17 set autoindent
18 set cindent
19
20 "缩进宽度
21 set tabstop=4
22 set softtabstop=4
23 set shiftwidth=4
24 "建议开启expandtab选项,会自动将tab扩展很空格,代码缩进会更美观
25 set expandtab
26 "set noexpandtab
27
28 "switch case 对齐风格
29 set cino=g0,:0
30
31
32 "
33 " taglist
34 "
35 let Tlist_Show_One_File=1 "只显示当前文件的tags
36 let Tlist_WinWidth=40 "设置taglist宽度
37 let Tlist_Exit_OnlyWindow=1 "tagList窗口是最后一个窗口,则退出Vim
38 let Tlist_Ctags_Cmd="/home/jiangfan/Downloads/ctags-5.8/ctags"
39 let g:winManagerWindowLayout='FileExplorer|TagList'
40 "在进入vim时自动打开winmanager
41 let g:AutoOpenWinManager = 1
42
43 "定义打开关闭winmanager快捷键
44 nmap wm :WMToggle<cr>
45 "定义打开关闭winmanager快捷键为F8
46 nmap <silent> <F8> :WMToggle<cr>
...
49"NERD Tree
50 let NERDChristmasTree=1
51 let NERDTreeAutoCenter=1
52 let NERDTreeMouseMode=2
53 let NERDTreeShowBookmarks=1
54 let NERDTreeShowFiles=1
55 let NERDTreeShowHidden=1
56 let NERDTreeShowLineNumbers=1
57 let NERDTreeWinPos='left'
58 let NERDTreeWinSize=31
59 nnoremap <silent> <leader>f :NERDTreeToggle<CR>
60
61
62 "
63 " winmanager
64 "
65 :set tags=/media/sf_share_space/PKU/0B702_ucos3_2014/tags
~