aboutsummaryrefslogtreecommitdiff
path: root/grep.vim
blob: 3b80fa133c5d1c5c2233ae22e8dd58faa13af572 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
nnoremap <leader>g :set operatorfunc=<SID>GrepOp<CR>g@
vnoremap <leader>g :<C-u>call <SID>GrepOp(visualmode())<CR>

function! s:GrepOp(type)
    let saved = @@

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

    silent execute "grep! -R " . shellescape(@@) . " ."
    copen
    let @@ = saved
endfunction