您的位置:首页 > 其它

vim全局搜索当前目录

2015-11-15 23:42 369 查看
在使用vim操作是,总是希望能够全局搜索某个word,函数名或者变量。但一直没有找到很好的方法,最近vimscript的书发现了一种非常好的方法,贴出来供大家分享:

vimrc中的代码片段:

map <leader>0 :ccl<cr>
nnoremap <leader>g :set operatorfunc=GrepOperator<cr>g@
vnoremap <leader>g :<c-u>call GrepOperator(visualmode())<cr>
function! GrepOperator(type)
if a:type ==# 'v'
normal! `<v`>y
elseif a:type ==# 'char'
normal! `[v`]y
else
return                                                                                                                                   
endif

silent execute "grep! -R " . shellescape(@@) . " ."
copen
endfunction
leader就是我们常用的快捷键符号,比如我的是逗号。

使用时

可以viw选中单词,然后<leader>g进行当前目录查找,结果会在fix window中显示<leader>0 用于关闭查找结果。

或者使用vi选中想要查找的文字片段

或者<leader>giw选择文字

升级版(考虑命名空间和临时寄存器):

nnoremap <leader>g :set operatorfunc=<SID>GrepOperator<cr>g@
vnoremap <leader>g :<c-u>call <SID>GrepOperator(visualmode())<cr>

function! s:GrepOperator(type)
let saved_unnamed_register = @@

if a:type ==# 'v'
normal! `<v`>y
elseif a:type ==# 'char'
normal! `[v`]y
else
return
endif

silent execute "grep! -R " . shellescape(@@) . " ."
copen

let @@ = saved_unnamed_register
endfunction
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vim 搜索 当前目录