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