В соответствии с Заполнение окна быстрого исправления из стандартного ввода? вы можете сделать следующее:
rg --vimgrep 'pat' | vim -q /dev/stdin
Вам необходимо указать --vimgrep
, чтобы получить вывод ripgrep в правильный формат для Vim,-q
считывает файл в список быстрых исправлений.
В качестве альтернативы
Выполните поиск из Vim с помощью :grep
Добавьте в файл vimrc
следующее:
set grepprg=rg\ --vimgrep
set grepformat^=%f:%l:%c:%m
Теперь вы можете сделать :grep 'pattern'
, и он заполнит список быстрых исправлений.Повторить поиск можно так же просто, как :grep
, а затем несколько нажатий <up>
, чтобы вернуться к нужным :grep
.
командам быстрого исправления
:cnext
/ :cprevious
для навигации по быстрому исправлению вперед и назад в списке быстрых исправлений :cfirst
/ :clast
для перехода к началу и концу списка быстрых исправлений - Используйте
:copen
, чтобы открыть быстрое исправлениеокно.Используйте <cr>
для перехода к записи - Используйте
:cclose
для закрытия окна быстрого исправления - Используйте
:cc
для отображения текущей ошибки. :colder
/:cnewer
для перехода к старым / новым спискам быстрых исправлений
Я бы порекомендовал вам создавать сопоставления для :cnext
и :cprevious
.Я лично использую unimpaired.vim , который обеспечивает сопоставления ]q
и [q
для :cnext
и :cprevious
.
Если вы хотите, чтобы окно быстрого исправления автоматически открывалось, введите следующее вваш vimrc
:
augroup autoquickfix
autocmd!
autocmd QuickFixCmdPost [^l]* cwindow
autocmd QuickFixCmdPost l* lwindow
augroup END
Существует эпизод Vimcasts на эту тему: Поиск нескольких файлов с помощью: vimgrep .
Project-широкий поиск и замена
Если вы используете :grep
/ :vimgrep
в качестве способа поиска по всему проекту и замените , тогда я предлагаю вам использовать :cdo
/ :cfdo
(в Vim 7.4.980 +).
:grep 'foo'
:cfdo %s/foo/bar/g|w
Для получения дополнительной помощи см .:
:h :grep
:h 'grepprg'
:h quickfix
:h :cnext
:h :copen
:h :ccl
:h :cc
:h :colder
:h :cdo
:h :cfdo