aboutsummaryrefslogtreecommitdiff
path: root/grep.vim
diff options
context:
space:
mode:
Diffstat (limited to 'grep.vim')
-rw-r--r--grep.vim23
1 files changed, 23 insertions, 0 deletions
diff --git a/grep.vim b/grep.vim
new file mode 100644
index 0000000..32181f7
--- /dev/null
+++ b/grep.vim
@@ -0,0 +1,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>