Using Grep from Inside Vim
"this is my rifle. there are many like it, but this one is mine." - rifleman’s creed
there are a thousand ways to grep over files. most developers i have observed keep a separate command line open just for searching. a few use an ide that has file search built in. personally, i use a couple of vim macros.
in vim, you can execute a cross-file search with something like
:vimgrep /dostuff()/j ../**/*.c
. i don’t know about you, but the first time i saw that syntax my brain simply refused.
instead, i have the following in my .vimrc file:
" opens search results in a window w/ links and highlight the matches
command! -nargs=+ grep execute 'silent grep! -i -r -n --exclude *.{json,pyc} . -e <args>' | copen | execute 'silent /<args>'
" shift-control-* greps for the word under the cursor
:nmap <leader>g :grep <c-r>=expand("<cword>")<cr><cr>
the first command is just a simple alias for the above mentioned native grep. like all custom commands, it must start with a capital letter (to differentiate it from native commands). you simply type
:grep foobar
and it will search in your current directory through all file extensions (except .json and .pyc -- you can add more to the blacklist).
it also displays the results in a nice little buffer window, which you can navigate through with normal hjkl keys, and open matches in the main editor window.
the second line is a key mapping that will grep for the word currently under the cursor. you can just navigate to a word and hit
leader-g
to issue the grep command.
Published at DZone with permission of Chase Seibert. See the original article here.
Opinions expressed by DZone contributors are their own.