I'm not sure this is what you're looking for, but maybe you could try [fzf][1] and [fzf.vim][2]. If you use [vim-plug][3] as a plugin manager, all you should have to do to install them, is to add these lines in your `vimrc`: Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' ... somewhere between the lines: call plug#begin('~/.vim/plugged') and: call plug#end() Then execute `:PlugInstall`. ---------- Among various commands and mappings provided by `fzf.vim` (whose only purpose seems to be to install mappings and commands asking `fzf` to fuzzy search through predefined sources), there is the command `:Ag`. To be able to use it, you need to install the shell command [ag][4]. On debian based distributions, it can be done with the following command: apt-get install silversearcher-ag The project on github explains how to install it on MacOS: brew install the_silver_searcher ---------- `:Ag` is a wrapper around `$ ag`, and allows you to fuzzy search a pattern in the files of the current directory (the one displayed when you type `:pwd`). The matches are updated after every keystroke. You can: - cycle forward and backward through the matches with `C-n` and `C-p` - select the current match and move to the next/previous one with `Tab`/`S-Tab` - select or deselect all the matches with `M-a` or `M-d` If you select one or several matches, after hitting Enter, they will populate the quickfix list. From there you'll be able to navigate through them with default Vim commands / mappings, such as `:cnext` and `:cprevious`. [![enter image description here][5]][5] If you want to add a prefix to all the commands installed by `fzf.vim`, and avoid overriding existing commands, you can add this in your `vimrc`: let g:fzf_command_prefix = 'your_prefix' I use `Fzf` as a prefix, that's why I didn't type `:Ag` but `:FzfAg`. ---------- If you prefer to use `git grep` instead of `ag`, it seems you could install your own custom wrapper around it, `:GGrep`, like this: command! -bang -nargs=* GGrep \ call fzf#vim#grep('git grep --line-number '.shellescape(<q-args>), 0, <bang>0) It's explained in `:h fzf-vim-customization`. Also, if `fzf` opens a pane in tmux, and you would prefer it takes the whole screen instead, you can append a bang to all the commands (`:Ag!`, `:GGrep!`, ...). ---------- As you said in your last [comment][6], by default `fzf` changes the configuration of your shell. For example, if you use `bash`, it will add the following line in your `~/.bashrc`: [ -f ~/.fzf.bash ] && source ~/.fzf.bash This will source the file `~/.fzf.bash`. The latter contains some code: # Setup fzf # --------- if [[ ! "$PATH" == */home/user/.fzf/bin* ]]; then export PATH="$PATH:/home/user/.fzf/bin" fi # Auto-completion # --------------- [[ $- == *i* ]] && source "/home/user/.fzf/shell/completion.bash" 2> /dev/null # Key bindings # ------------ source "/home/user/.fzf/shell/key-bindings.bash" This code appends a path to the environment variable `$PATH`: `/home/user/.fzf/bin` ; which is the folder containing the `fzf` program. It also sources 2 other files: /home/user/.fzf/shell/completion.bash /home/user/.fzf/shell/key-bindings.bash The first one seems to define completion functions, while the second installs key bindings. Unfortunately, the key bindings may override default `readline` functions. For example, `fzf` binds the function `fzf-file-widget` to `C-t`. This key is usually used by readline to execute the `transpose-chars` function. If you don't want this, one possible solution would be to restore the key bindings inside your `~/.bashrc`, after `fzf` has sourced its configuration. For example, if you wanted `C-t` to keep its old behavior, that is transposing the 2 characters around the cursor, and bind `fzf-file-widget` to another key, let's say `C-x C-t`, you could add these lines at the end of `~/.bashrc`: bind -x '"\C-x\C-t": fzf-file-widget' bind '"\C-t": transpose-chars' The same thing applies to the `zsh` shell, but the syntax to install a key binding is a little different: bindkey '^X^T' fzf-file-widget bindkey '^T' transpose-chars ---------- If one of the shell key binding you were used to has been overridden by `fzf`, you want to restore it, but don't know what's the exact name of the function which was executed, you could try the following thing. First, inside your `~/.bashrc`, temporarily comment out the line which sources the `fzf` configuration. Then, reopen a terminal, and have a look at the output of the `bind -P` command, which you can read in a Vim buffer: bind -P | vim -R - I'm not sure, but I think it should display most or all the `readline` key bindings. If you're looking for the name of the readline function bound to the `C-t` key, in the Vim buffer, you would search `\\C-t`. And if you were looking for the one bound to `M-c` (meta / alt key), you would search `\\ec` (`\e` stands for the escape key and it seems `M-c` produces the same keycodes as `escape + c`). You can do the same thing in `zsh` by looking at the output of the `bindkey` command. But this time, `^[` stands for the meta/alt modifier key, while a single caret (`^`) character stands for the control key. ---------- I may have missed some, but currently it seems `fzf` installs 4 key bindings. They use the key sequences `C-i` (same as `Tab`), `C-r`, `C-t` and `M-c`. They are bound to the following functions: C-i fzf-completion C-r fzf-history-widget C-t fzf-file-widget M-c fzf-cd-widget On my system, originally, `readline` (the library used by `bash` to edit the command line) bound those keys to these functions: C-i complete C-r reverse-search-history C-t transpose-chars M-c capitalize-word And `zle` (the line editor used by `zsh`), bound them to: C-i expand-or-complete C-r history-incremental-search-backward C-t transpose-chars M-c capitalize-word [1]: https://github.com/junegunn/fzf [2]: https://github.com/junegunn/fzf.vim [3]: https://github.com/junegunn/vim-plug [4]: https://github.com/ggreer/the_silver_searcher [5]: https://i.sstatic.net/XlTIQ.gif [6]: http://vi.stackexchange.com/questions/10692/how-to-interactively-search-grep-with-vim/10693?noredirect=1#comment19232_10693