According to Filling the quickfix window from stdin? you can do the following:
rg --vimgrep 'pat' | vim -q /dev/stdin
You need to supply --vimgrep
to get ripgrep's output into the correct format for Vim. -q
reads a file into the quickfix list.
Alternatively
Do your searching from inside Vim via :grep
Add the following to your vimrc
file:
set grepprg=rg\ --vimgrep
set grepformat^=%f:%l:%c:%m
Now you can do :grep 'pattern'
and it will populate the quickfix list. Redoing your search is as easy as :grep
followed by some <up>
presses to get back to your relevant :grep
.
Quickfix commands
:cnext
/:cprevious
to navigate the quickfix forwards and backwards in the quickfix list
:cfirst
/:clast
to jump to the start and end of the quickfix list
- Use
:copen
to open the quickfix window. Use <cr>
to jump to an entry
- Use
:cclose
to close the quickfix window
- Use
:cc
to display the current error.
:colder
/:cnewer
to jump older/newer quickfix lists
I would recommend you create mappings for :cnext
and :cprevious
. I personally use unimpaired.vim which provides ]q
& [q
mappings for :cnext
and :cprevious
.
If you want the quickfix window to open automatically put the following in your vimrc
:
augroup autoquickfix
autocmd!
autocmd QuickFixCmdPost [^l]* cwindow
autocmd QuickFixCmdPost l* lwindow
augroup END
There is a Vimcasts episode about this topic: Search multiple files with :vimgrep.
Project-wide Search and Replace
If you are using :grep
/:vimgrep
as way to do a project-wide search and replace then I suggest you use :cdo
/:cfdo
(in Vim 7.4.980+).
:grep 'foo'
:cfdo %s/foo/bar/g|w
For more help see:
:h :grep
:h 'grepprg'
:h quickfix
:h :cnext
:h :copen
:h :ccl
:h :cc
:h :colder
:h :cdo
:h :cfdo
Vim: Warning: Input is not from a terminal
, tryvim -q <(rg --vimgrep 'pat')
... @Sochor in what way this doesn't answer? this seems like what you wanted based on your question – Skill