:grep
/ :vimgrep
ambos usam a lista de correções rápidas para armazenar locais. Como você notou, o vim passará automaticamente para a primeira ocorrência (use !
para evitar esse comportamento). Basta usar :cnext
para ir para o próximo local na lista de correções rápidas.
Comandos Quickfix
:cnext
/ :cprevious
para navegar para a frente e para trás na correção rápida na lista de correções rápidas
:cfirst
/ :clast
para ir para o início e o fim da lista de correções rápidas
- Use
:copen
para abrir a janela do quickfix. Use <cr>
para pular para uma entrada
- Use
:cclose
para fechar a janela do quickfix
- Use
:cc
para exibir o erro atual.
:colder
/ :cnewer
para pular listas de correções rápidas mais antigas / mais recentes
Eu recomendo que você crie mapeamentos para :cnext
e :cprevious
. Eu pessoalmente uso unimpaired.vim, que fornece ]q
& [q
mapeamentos para :cnext
e :cprevious
.
Se você deseja que a janela do quickfix seja aberta automaticamente, coloque o seguinte em vimrc
:
augroup autoquickfix
autocmd!
autocmd QuickFixCmdPost [^l]* cwindow
autocmd QuickFixCmdPost l* lwindow
augroup END
Há um episódio do Vimcasts sobre este tópico: Pesquise vários arquivos com: vimgrep .
Pesquisa e substituição em todo o projeto
Se você estiver usando :grep
/ :vimgrep
como maneira de fazer uma pesquisa e substituir todo o projeto , sugiro que você use :cdo
/ :cfdo
(no Vim 7.4.980+).
:grep 'foo'
:cfdo %s/foo/bar/g|w
Se sua versão do Vim não possui :cdo
/ :cfdo
coloca os seguintes comandos em seu vimrc
arquivo para fornecer :Cdo
/ :Cfdo
comandos alternativos.
if !exists(':cdo')
command! -nargs=1 -complete=command Cdo try | sil cfirst |
\ while 1 | exec <q-args> | sil cn | endwhile |
\ catch /^Vim\%((\a\+)\)\=:E\%(553\|42\):/ |
\ endtry
command! -nargs=1 -complete=command Cfdo try | sil cfirst |
\ while 1 | exec <q-args> | sil cnf | endwhile |
\ catch /^Vim\%((\a\+)\)\=:E\%(553\|42\):/ |
\ endtry
endif
Usando um programa alternativo para :grep
Às vezes, grep
não é bom o suficiente para suas necessidades de pesquisa. Você pode alterar seu :grep
programa através da 'grepprg'
configuração (também pode ser necessário alterar 'grepformat'
). Pessoalmente, uso o ripgrep adicionando o seguinte ao meu vimrc
arquivo, conforme instruído na rg
página do manual:
set grepprg=rg\ --vimgrep
set grepformat^=%f:%l:%c:%m
Nota: Pode querer usar -S
sinalizador, por exemplo set grepprg=rg\ -S\ --vimgrep
, para usar a pesquisa "caso inteligente" (pesquisa sem distinção entre maiúsculas e minúsculas quando todas as letras minúsculas).
Agora :grep
usará rg
para pesquisar. por exemplo :grep foo -t js
.
Aqui estão alguns programas grep alternativos para examinar: ack , ag , ripgrep e git grep
( Fugitive.vim fornece :Ggrep
wrapper)
Para obter mais ajuda, consulte:
:h :grep
:h 'grepprg'
:h quickfix
:h :cnext
:h :copen
:h :ccl
:h :cc
:h :colder
:h :cdo
:h :cfdo