aboutsummaryrefslogtreecommitdiff
path: root/grep.vim
blob: 32181f7bd7f5dcbfadaabfe1dfda1aa505a8404d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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(@@) . " ."
    silent redraw!
    let g:quickfix_is_open = 1
    copen
    let @@ = saved
endfunction

nnoremap <leader>gn :cnext<CR>
nnoremap <leader>gp :cprevious<CR>