查找文件(包括文件夹),几种方式:
建议多使用easygrep跟vimgrep,其次是cscope。
1. find
使用find命令,在当前目录查找并打开文件(夹),比如:find vim-find,相当:e vim-find,可以直接使用e来替代find。
这种查找是在当前path中查找,所以应该先设置好当前路径,比如使用netrw的情况下只需要按下c即可。操作:c --> :e youfile
好处:可以快速定位到当前目录的文件,不足:明显只能是当前目录,而且不能查找子目录。
2. vimgrep
实际上只是查找字符串(文件内容,非文件)
vimgrep /*/ **/appdelegate --查找appdelegate文件,不区分文件名大小写
vimgrep /av_register/ ** --vim的工作目录下递归查找
vimgrep /av_register/ * --只在vim的当前工作目录查找
vimgrep /av_register/ **/*.cpp --查找所有cpp文件
好:支持正则查找字符串。不好:速度比较慢。
3. cscope
ctags的升级:cscope。
在vim中,进行查找的工作,比如查找文件,查找函数的所有调用,使用cscope。
安装:
brew install cscope
跟ctags的使用一样,先到代码的根目录,生成cscope.out:
cscope -Rbkq
并且,设置vimrc:
if has("cscope")
set cscopequickfix=s-,c-,d-,i-,t-,e-
set csto=0
set cst
set csverb
if filereadable("cscope.out")
cs add cscope.out
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<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>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
endif
参数说明:
f --查找文件
c --查找所有调用
i --查找包含这个头文件的所有文件
g --查找定义,同ctags的<ctrl+]>
t --查找所有使用到此字符串的地方,同vimgrep
比如:
:cs find t AVSEEK_SIZE --所有有这个字符串的地方
:cs f c ds_size --所有调用ds_size的地方
:cs find g ds_size --ds_size的定义
上面的配置加入了快捷键:ctrl + _ + ..
同样,要注意vim当前的工作目录,最好是cscope.out所在的目录,以避免在使用cscope查找到文件并切换过去时创建了新的文件(由于是新的目录)。
注意,使用cscope的前提是先要让vim加载到cscope.out库,上面在vimrc中的设置就是为了让vim在当前目录加载cscope.out,如果当前目录没有,就会从CSCOPE_DB加载(可以先设置CSCOPE_DB的值)。也可以直接使用:cs add cscope.out来加载。
好:cscope查找快速。不好:还是有很大局限,比如不支持正则表达式的查找,而且有时总是跳不过去。
4. easygrep
先安装easygrep插件:
//www.vim.org/scripts/script.php?script_id=2438
在~/.vim下,mkdir plugin doc
然后把easygrep的plugin跟doc的内容对应拷贝进去,即可使用。
使用方式:直接使用命令:Grep ... 或者对当前光标处的word使用快捷键:\vv等。
\vv --相当Grep word
\vV --相当Grep !word,即全字查找
\va --查找,并把结果追加到上一次查找结果中
\vA --全字查找,并把结果追回
\vr --相当Replace target replacement
\vo --相当GrepOptions,可设置查看设置选项
建议多使用easygrep跟vimgrep,其次是cscope。
1. find
使用find命令,在当前目录查找并打开文件(夹),比如:find vim-find,相当:e vim-find,可以直接使用e来替代find。
这种查找是在当前path中查找,所以应该先设置好当前路径,比如使用netrw的情况下只需要按下c即可。操作:c --> :e youfile
好处:可以快速定位到当前目录的文件,不足:明显只能是当前目录,而且不能查找子目录。
2. vimgrep
实际上只是查找字符串(文件内容,非文件)
vimgrep /*/ **/appdelegate --查找appdelegate文件,不区分文件名大小写
vimgrep /av_register/ ** --vim的工作目录下递归查找
vimgrep /av_register/ * --只在vim的当前工作目录查找
vimgrep /av_register/ **/*.cpp --查找所有cpp文件
好:支持正则查找字符串。不好:速度比较慢。
3. cscope
ctags的升级:cscope。
在vim中,进行查找的工作,比如查找文件,查找函数的所有调用,使用cscope。
安装:
brew install cscope
跟ctags的使用一样,先到代码的根目录,生成cscope.out:
cscope -Rbkq
并且,设置vimrc:
if has("cscope")
set cscopequickfix=s-,c-,d-,i-,t-,e-
set csto=0
set cst
set csverb
if filereadable("cscope.out")
cs add cscope.out
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<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>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
endif
参数说明:
f --查找文件
c --查找所有调用
i --查找包含这个头文件的所有文件
g --查找定义,同ctags的<ctrl+]>
t --查找所有使用到此字符串的地方,同vimgrep
比如:
:cs find t AVSEEK_SIZE --所有有这个字符串的地方
:cs f c ds_size --所有调用ds_size的地方
:cs find g ds_size --ds_size的定义
上面的配置加入了快捷键:ctrl + _ + ..
同样,要注意vim当前的工作目录,最好是cscope.out所在的目录,以避免在使用cscope查找到文件并切换过去时创建了新的文件(由于是新的目录)。
注意,使用cscope的前提是先要让vim加载到cscope.out库,上面在vimrc中的设置就是为了让vim在当前目录加载cscope.out,如果当前目录没有,就会从CSCOPE_DB加载(可以先设置CSCOPE_DB的值)。也可以直接使用:cs add cscope.out来加载。
好:cscope查找快速。不好:还是有很大局限,比如不支持正则表达式的查找,而且有时总是跳不过去。
4. easygrep
先安装easygrep插件:
//www.vim.org/scripts/script.php?script_id=2438
在~/.vim下,mkdir plugin doc
然后把easygrep的plugin跟doc的内容对应拷贝进去,即可使用。
使用方式:直接使用命令:Grep ... 或者对当前光标处的word使用快捷键:\vv等。
\vv --相当Grep word
\vV --相当Grep !word,即全字查找
\va --查找,并把结果追加到上一次查找结果中
\vA --全字查找,并把结果追回
\vr --相当Replace target replacement
\vo --相当GrepOptions,可设置查看设置选项