【总结】gvim+ctags+cscope+taglist阅读Linux源码
来源:互联网 发布:如何申请淘宝小号流程 编辑:程序博客网 时间:2024/06/05 15:40
效果图
1. 插件管理
安装vundle
1.1 建立文件夹
在home文件夹下创建.vim .vim/bundle,修改权限
rick@ubuntu:~$sudo mkdir -p .vim/bundlerick@ubuntu:~$ ls -al .vimtotal 12drwxr-xr-x 3 root root 4096 7月 29 16:41 .drwxr-xr-x 22 rick rick 4096 7月 29 16:41 ..drwxr-xr-x 2 root root 4096 7月 29 16:41 bundlerick@ubuntu:~$ sudo chmod 777 .vim -Rrick@ubuntu:~$ ls -al .vimtotal 12drwxrwxrwx 3 root root 4096 7月 29 16:41 .drwxr-xr-x 22 rick rick 4096 7月 29 16:41 ..drwxrwxrwx 2 root root 4096 7月 29 16:41 bundle
1.2 下载
vundle 会接管 .vim/ 下的所有原生目录,所以先清空该目录,再通过如下命令安装 vundle:
rick@ubuntu:~$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vimrick@ubuntu:~$ ls -al .vim/bundle/total 12drwxrwxrwx 3 root root 4096 7月 29 16:45 .drwxrwxrwx 3 root root 4096 7月 29 16:41 ..drwxrwxr-x 8 rick rick 4096 7月 29 16:45 Vundle.vim
1.3 配置文件
将.vimrc文件复制到home文件夹下
rick@ubuntu:~/work/vim$ cp .vimrc ../..
1.4 更新,安装插件
打开配置文件
rick@ubuntu:~$ vim .vimrc
在下面添加所需要的插件
...call vundle#begin()Plugin 'VundleVim/Vundle.vim'Plugin 'altercation/vim-colors-solarized'Plugin 'tomasr/molokai'Plugin 'vim-scripts/phd'Plugin 'Lokaltog/vim-powerline'Plugin 'octol/vim-cpp-enhanced-highlight'Plugin 'nathanaelkane/vim-indent-guides'Plugin 'derekwyatt/vim-fswitch'Plugin 'kshenoy/vim-signature'Plugin 'vim-scripts/BOOKMARKS--Mark-and-Highlight-Full-Lines'Plugin 'majutsushi/tagbar'Plugin 'vim-scripts/indexer.tar.gz'Plugin 'vim-scripts/DfrankUtil'Plugin 'vim-scripts/vimprj'Plugin 'dyng/ctrlsf.vim'Plugin 'terryma/vim-multiple-cursors'Plugin 'scrooloose/nerdcommenter'Plugin 'vim-scripts/DrawIt'Plugin 'SirVer/ultisnips'Plugin 'derekwyatt/vim-protodef'Plugin 'scrooloose/nerdtree'Plugin 'fholgado/minibufexpl.vim'Plugin 'gcmt/wildfire.vim'Plugin 'sjl/gundo.vim'Plugin 'Lokaltog/vim-easymotion'Plugin 'suan/vim-instant-markdown'Plugin 'lilydjwg/fcitx.vim'Plugin 'vim-scripts/cscope.vim'Plugin 'vim-scripts/taglist.vim'call vundle#end()…
安装插件,vim打开任意文件,执行以下命令
:PluginUpdate:PluginInstall:PluginClean
2. 常用插件
2.1 ctags
2.1.1 安装
rick@ubuntu:~$ sudo apt-get install ctags
2.1.2 检查
rick@ubuntu:~$ ctags --helpExuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert Compiled: Oct 7 2014, 13:52:34 Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net Optional compiled features: +wildcards, +regexUsage: ctags [options] [file(s)]…
2.1.3 tags文件
进入内核目录执行ctags -R
rick@ubuntu:~$ cd work/linux/src/linux-2.6.22/rick@ubuntu:~/work/linux/src/linux-2.6.22$ ctags -R
目录下生成tags文件
rick@ubuntu:~/work/linux/src/linux-2.6.22$ ll tags -rw-rw-r-- 1 rick rick 78414446 10月 7 18:45 tags
在vim中执行
: set tags=/home/work/linux/src/linux-2.6.22/tags
2.1.4 使用方法
把光标定位到某一函数名上或者宏上, 按下 Ctrl + ], vim就可以自动切换到该函数定义处!
要返回只需要按下Ctrl + o 或者 Ctrl + t.
2.1.5 例子
打开init/main.c文件
光标移到max_cpus处,
按下 Ctrl + ],查看定义
按下Ctrl + o,返回
2.2 cscope
2.2.1 安装
rick@ubuntu:~$ sudo apt-get install cscope
2.2.2 检查
rick@ubuntu:~$ cscope --helpUsage: cscope [-bcCdehklLqRTuUvV] [-f file] [-F file] [-i file] [-I dir] [-s dir] [-p number] [-P path] [-[0-8] pattern] [source files]…
2.2.3 数据库文件
进入内核目录,执行
rick@ubuntu:~/work/linux/src/linux-2.6.22$ cscope -Rbkqrick@ubuntu:~/work/linux/src/linux-2.6.22$ ll cscope*-rw-rw-r-- 1 rick rick 294201 10月 7 14:37 cscope.files-rw-rw-r-- 1 rick rick 15589376 10月 7 14:38 cscope.in.out-rw-rw-r-- 1 rick rick 125349471 10月 7 14:38 cscope.out-rw-rw-r-- 1 rick rick 92668236 10月 7 14:38 cscope.po.out
2.2.4 配置
将数据库文件添加到.vimrc中
..."cscopennoremap <leader>fa :call cscope#findInteractive(expand('<cword>'))<CR>nnoremap <leader>l :call ToggleLocationList()<CR>" s: Find this C symbolnnoremap <leader>fs :call cscope#find('s', expand('<cword>'))<CR>" g: Find this definitionnnoremap <leader>fg :call cscope#find('g', expand('<cword>'))<CR>" d: Find functions called by this functionnnoremap <leader>fd :call cscope#find('d', expand('<cword>'))<CR>" c: Find functions calling this functionnnoremap <leader>fc :call cscope#find('c', expand('<cword>'))<CR>" t: Find this text stringnnoremap <leader>ft :call cscope#find('t', expand('<cword>'))<CR>" e: Find this egrep patternnnoremap <leader>fe :call cscope#find('e', expand('<cword>'))<CR>" f: Find this filennoremap <leader>ff :call cscope#find('f', expand('<cword>'))<CR>" i: Find files #including this filennoremap <leader>fi :call cscope#find('i', expand('<cword>'))<CR>if filereadable("cscope.out") cs add csope.outelseif $CSCOPE_DB != "" cs add $CSCOPE_DBendif…
2.2.5 使用方法
<leader>fs s: Find this C symbol<leader>fg g: Find this definition<leader>fd d: Find functions called by this function<leader>fc c: Find functions calling this function<leader>ft t: Find this text string<leader>fe e: Find this egrep pattern<leader>ff f: Find this file<leader>fi i: Find files #including this file
2.2.6 例子
打开init/main.c文件
按下;fs,查看所有max_cpus出现的地方
2.3 taglist
2.3.1 安装
taglist 由vundle管理
打开.vimrc文件,将taglist添加到vundle插件列表中
Plugin 'vim-scripts/taglist.vim'
执行安装
:PluginInstall
在配置文件.vimrc中,配置taglist
nmap <F7> :TlistToggle<CR>let Tlist_Ctags_Cmd="/usr/bin/ctags" let Tlist_Inc_Winwidth=0 let Tlist_Exit_OnlyWindow=0
2.3.2 使用
F7打开或隐藏tag list
2.4 NERDTree
工程文件浏览插件
2.4.1 安装
NERDTree由vundle管理
打开.vimrc文件,将nerdtree添加到vundle插件列表中
Plugin 'scrooloose/nerdtree'
执行安装
:PluginInstall
在配置文件.vimrc中,配置NERDTree
..." 工程文件浏览" 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file listnmap <Leader>fl :NERDTreeToggle<CR>" 设置 NERDTree 子窗口宽度let NERDTreeWinSize=22" 设置 NERDTree 子窗口位置let NERDTreeWinPos="right"" 显示隐藏文件let NERDTreeShowHidden=1" NERDTree 子窗口中不显示冗余帮助信息let NERDTreeMinimalUI=1" 删除文件时自动删除文件对应 bufferlet NERDTreeAutoDeleteBuffer=1…
2.4.2 使用方法
;fl,打开隐藏NERDTree
3. 其他vim命令
ctrl+Tab 正向遍历bufferctrl+shift+Tab 逆向遍历buffer;+hw 跳转左侧window;+lw 跳转右侧window;+kw 跳转上侧window;+jw 跳转下侧window
参考资料
像 IDE 一样使用 vim
使用 vim + ctags + cscope + taglist 阅读源码
阅读全文
0 0
- 【总结】gvim+ctags+cscope+taglist阅读Linux源码
- 使用 vim + ctags + cscope + taglist 阅读源码
- 使用 vim + ctags + cscope + taglist 阅读源码
- gvim配置cscope+ctags+taglist
- windows下gvim+ctags+cscope+taglist
- windows下gvim+ctags+cscope+taglist
- linux下代码阅读 -- 配置vim+ctags+taglist+cscope[转]
- [转贴]linux下代码阅读 -- 配置vim+ctags+taglist+cscope
- Linux下代码阅读 -- 配置vim+ctags+taglist+cscope[转]
- linux下代码阅读 -- 配置vim+ctags+taglist+cscope
- linux下代码阅读 -- 配置vim+ctags+taglist+cscope
- Linux 内核阅读工具vim+ctags+cscope+taglist
- Linux 内核阅读工具vim+ctags+cscope+taglist
- Linux 内核阅读工具vim+ctags+cscope+taglist
- Linux 内核阅读工具vim+ctags+cscope+taglist
- vim + ctags + taglist + cscope 阅读代码
- vim+cscope+ctags+taglist 代码阅读
- vim+ ctags + taglist + cscope +bufexploer + lookupfile总结
- docker国内镜像设置
- arch linux python3.6.2 import matplotlib.pyplot as plt 报错
- C++使用ICE实现两台主机通信实例
- HTTP接口
- 跨浏览器的事件处理程序
- 【总结】gvim+ctags+cscope+taglist阅读Linux源码
- Combinations:给定数据范围与位数,求出
- JS-正则详解
- hibernate 的原理及其步骤
- markdown 快捷键
- Android中的两个Activity用Intent来传递java bean实体
- Oracle与mysql批量新增或修改语法
- 转载:数据库的并发控制技术深度探索
- 1005. 继续(3n+1)猜想 (25)