Como simplifiquei a pesquisa em todo o projeto do VIM com ripgrep

brew tap burntsushi/ripgrep https://github.com/BurntSushi/ripgrep.git
brew install burntsushi/ripgrep/ripgrep-bin

Aqui está um script automatizado que eu uso como parte do meu dotfiles.

Se você preferir qualquer outro modo de instalação, consulte o site oficial do ripgrep. instalação seção.

Passo 2: Instale o ack.vim

Para instalar o ack.vim usando o vim-plug gerenciador de pacotes, adicione o seguinte no seu vimrc:

Plug 'mileszs/ack.vim'

ou consulte o site ack.vim instalação seção.

etapa 3: Configure o ack.vim para usar o rg

Adicione a seguinte configuração ao seu vimrc:

" ack.vim --- {{{

" Use ripgrep for searching ⚡️
" Options include:
" --vimgrep -> Needed to parse the rg response properly for ack.vim
" --type-not sql -> Avoid huge sql file dumps as it slows down the search
" --smart-case -> Search case insensitive if all lowercase pattern, Search case sensitively otherwise
let g:ackprg = 'rg --vimgrep --type-not sql --smart-case'

" Auto close the Quickfix list after pressing '' on a list item
let g:ack_autoclose = 1

" Any empty ack search will search for the work the cursor is on
let g:ack_use_cword_for_empty_search = 1

" Don't jump to first match
cnoreabbrev Ack Ack!

" Maps / so we're ready to type the search keyword
nnoremap / :Ack!
" }}}

" Navigate quickfix list with ease
nnoremap  [q :cprevious
nnoremap  ]q :cnext

Nota: let g:ackprg define o comando que o ack.vim executará internamente.
Observe também que estamos usando rg aqui com algumas opções. Olhe para a man rg para modificar as opções que podem atender aos seus requisitos.

Para explorar as opções do ack.vim, consulte o seguinte documentação.

Uso

Agora que estamos prontos, aqui estão os casos de uso mais comuns:

Procure uma palavra sob o cursor

pressione / seguido de enter.
Desde que definimos let g:ack_use_cword_for_empty_search = 1, Ack volta para a palavra atual no cursor da pesquisa, portanto, não é necessário digitar essa palavra.

pressione / Seguido da palavra (sem aspas) e digite.
Como estamos usando maiúsculas e minúsculas com ripgrep, isso fará uma pesquisa sem distinção entre maiúsculas e minúsculas se a palavra estiver em letras minúsculas e uma pesquisa com distinção entre maiúsculas e minúsculas.

pesquisa de palavras com ack.vim

pressione / seguido por um padrão regex entre aspas e enter.

pesquisa regex com ack.vim

O Ack.vim preenche os resultados na lista Quickfix, que é aberta como uma janela inferior separada. Existem várias maneiras de navegar na lista de resultados:

  • Você pode navegar pela lista do Quickfix usando j/k e pressione enter para fechar a lista do Quickfix. O VIM o levará ao local exato da palavra encontrada.
  • Você também pode usar as teclas de atalho ]q ou [q. O VIM moverá o cursor para o resultado seguinte / anterior e abrirá o arquivo em um novo buffer, se necessário.
    Para fechar a lista do Quickfix quando terminar, você pode ir para a janela inferior do Quickfix e fechá-la ou simplesmente executar :cclose
  • Para abrir o backup da lista do Quickfix, execute :copen

Nota de encerramento

E aí está, uma pesquisa e navegação perfeitas para a sua próxima pesquisa de palavras-chave em todo o projeto!

Se você estiver preso em qualquer lugar, procure os respectivos documentos ack.vim e ripgrep em seus respectivos repositórios ou envie-me uma mensagem. Compartilhe a configuração da qual você se orgulha, para ajudar outras pessoas a melhorar a deles.

Aqui estão os meus dotfiles.