vim + cscope + ctags代码阅读模式:
在Linux中没有windows中好用的IDE开发工具,我们也尽量不要依赖图形开发工具。
以命令行模式开发能排除干扰,极大的提高开发的效率。
以ubuntu开发环境为例:
cscope安装:
第一步:
sudo apt-get install cscope
通过scope --version命令查询到版本,则证明安装成功。
第二步:
在vim配置文件vimrc中添加cscope的配置选项,以便打开vim即可加载cscope .
scope setting --
if has("cscope")
set csprg=/usr/bin/cscope " 指定用来执行cscope的命令
set csto=0 " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
set cst " 同时搜索cscope数据库和标签文件
set cscopequickfix=s-,c-,d-,i-,t-,e- " 使用QuickFix窗口来显示cscope查找结果
set nocsverb
if filereadable("cscope.out") " 若当前目录下存在cscope数据库,添加该数据库到vim
cs add cscope.out
elseif $CSCOPE_DB != "" " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
cs add $CSCOPE_DB
endif
set csverb
map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 将:cs find c等Cscope查找命令映射为<C-\>c等快捷键(按法是先按Ctrl+\,松手后再按下c)
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i <C-R>=expand("<cfile>")<CR><CR> :copen<CR><CR>
endif
第三步:
注意:补充一点:在写这个Makefile之前,先用sudo apt-get install ctags安装ctags
进入需要阅读工程的根目录,设置cscope的信息:如导入工程到数据库等
如我的工程在/tmp/project, 我在/tmp/project目录下新建一个Makefile ,内容如下,然后执行make
all:
# find . -name "*.[h|c]" > cscope.files
find `pwd` -name "*.[ch]" -o -name "*.cpp" > cscope.files
#cscope -bR -i cscope.files<span lang="en-us" xml:lang="en-us"><span style="font-family:'Times New Roman';"><span style="font-size:13px;"></span></span></span>
cscope -bkq -i cscope.files
ctags -R
CSCOPE_DB=/home/tommy/share/senseIO_2/cscope.out; export CSCOPE_DB
#CSCOPE_DB=$(shell pwd)/cscope.out; export CSCOPE_DB
其中#部分代表注释:当时替换成#部分,运行cscope会失败,未找到具体原因。
其中/home/tommy/share/senseIO_2/cscope.out是工程的目录的绝对路径下生成的cscope.out文件,这需要根据实际状况替换。
第四步:
用vim打开工程文件,即可用cscope或者ctags命令去搜索以及跳转。详细见第二篇:
在Linux中没有windows中好用的IDE开发工具,我们也尽量不要依赖图形开发工具。
以命令行模式开发能排除干扰,极大的提高开发的效率。
以ubuntu开发环境为例:
cscope安装:
第一步:
sudo apt-get install cscope
通过scope --version命令查询到版本,则证明安装成功。
第二步:
在vim配置文件vimrc中添加cscope的配置选项,以便打开vim即可加载cscope .
scope setting --
if has("cscope")
set csprg=/usr/bin/cscope " 指定用来执行cscope的命令
set csto=0 " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
set cst " 同时搜索cscope数据库和标签文件
set cscopequickfix=s-,c-,d-,i-,t-,e- " 使用QuickFix窗口来显示cscope查找结果
set nocsverb
if filereadable("cscope.out") " 若当前目录下存在cscope数据库,添加该数据库到vim
cs add cscope.out
elseif $CSCOPE_DB != "" " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
cs add $CSCOPE_DB
endif
set csverb
map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 将:cs find c等Cscope查找命令映射为<C-\>c等快捷键(按法是先按Ctrl+\,松手后再按下c)
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i <C-R>=expand("<cfile>")<CR><CR> :copen<CR><CR>
endif
第三步:
注意:补充一点:在写这个Makefile之前,先用sudo apt-get install ctags安装ctags
进入需要阅读工程的根目录,设置cscope的信息:如导入工程到数据库等
如我的工程在/tmp/project, 我在/tmp/project目录下新建一个Makefile ,内容如下,然后执行make
all:
# find . -name "*.[h|c]" > cscope.files
find `pwd` -name "*.[ch]" -o -name "*.cpp" > cscope.files
#cscope -bR -i cscope.files<span lang="en-us" xml:lang="en-us"><span style="font-family:'Times New Roman';"><span style="font-size:13px;"></span></span></span>
cscope -bkq -i cscope.files
ctags -R
CSCOPE_DB=/home/tommy/share/senseIO_2/cscope.out; export CSCOPE_DB
#CSCOPE_DB=$(shell pwd)/cscope.out; export CSCOPE_DB
其中#部分代表注释:当时替换成#部分,运行cscope会失败,未找到具体原因。
其中/home/tommy/share/senseIO_2/cscope.out是工程的目录的绝对路径下生成的cscope.out文件,这需要根据实际状况替换。
第四步:
用vim打开工程文件,即可用cscope或者ctags命令去搜索以及跳转。详细见第二篇:
Linux开发:vim + cscope + ctags代码阅读模式之基本使用方法
参考:
vimrc文件配置项添加
http://cscope.sourceforge.net/cscope_maps.vim
cscope官方参考文档:
http://cscope.sourceforge.net/cscope_vim_tutorial.html
http://cscope.sourceforge.net/large_projects.html
cscope中这样生成cscope.files(绝对路径的参考):
https://blog.youkuaiyun.com/david_xtd/article/details/7737653#
vi/Vim + Cscope/Ctags
https://blog.easwy.com/archives/vim-cscope-ctags/