目标:对于多个子项目,有自己的cscope.out文件,当在父目录中打开im时,自动加载所有子工程的cscope;
为了便于单独管理cscope的配置文件,单独建立了cscope目录,设置~/cscope,下面在根据项目名字建立子目录;
1. cscope.out的文件的建立;
在子目录中 运行 find /src_dir -name "*.cpp" -o -name "*.c" -o -name "*.h" > cscope.files; (由于src和cscope文件不在一个目录,所以find时写绝对路径;
运行cscope -Rbkq 产生cscope.out 文件
2. 编写.vimrc文件
为了编辑其他文件时不加载cscope文件,所以.vimrc分为两个部分
-
~/.vimrc 文件,供vim自动加载;
-
~/cscope/.vimrc文件,供加载cscope文件;
-
-
function Checkcscope()
-
let cscope="/home/test/code/cscope"
-
let pwd=getcwd()
-
let iscscope=stridx(pwd,cscope)
-
if iscscope==0
-
:execute "source". cscope. "/.vimrc"
-
endif
-
endfunction
-
:call Checkcscope()
-
let files=findfile("cscope.out",".,*",-1)
-
for f in files
-
:execute "cs add ". f
-
endfor
-
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>
代码关键: findfile的第二个参数用“.,*"表示在当前目录和子目录中搜索文件;path是用逗号隔开的,这有点不一样;
对于cs的调用,使用execute来拼接后运行的。因为cs 命令后直接跟文件名,而不支持变量。所以要先拼接出命令,然后在execute;
阅读(9494) | 评论(3) | 转发(3) |