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