Estou usando grep
para encontrar ocorrências de funções em um projeto.
:grep "set_val" *
Sai do vim e sai:
code.py:68: self._device.set_val('Level', new_level)
code.py:84: self._device.set_val("Mode", "Remote")
Press ENTER or type command to continue
Pressiono enter e estou na code.py:68
qual é a primeira ocorrência.
Como passo para outras ocorrências?
external-command
TheMeaningfulEngineer
fonte
fonte
Respostas:
: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:copen
para abrir a janela do quickfix. Use<cr>
para pular para uma entrada:cclose
para fechar a janela do quickfix:cc
para exibir o erro atual.:colder
/:cnewer
para pular listas de correções rápidas mais antigas / mais recentesEu 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
: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+).Se sua versão do Vim não possui
:cdo
/:cfdo
coloca os seguintes comandos em seuvimrc
arquivo para fornecer:Cdo
/:Cfdo
comandos alternativos.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 meuvimrc
arquivo, conforme instruído narg
página do manual:Nota: Pode querer usar
-S
sinalizador, por exemploset 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:
fonte
:cwindow
/:copen
dentro doQuickFixCmdPost
evento autocmd restaurará o buffer atual após o disparo. Você pode adicionar:wincmd b
ou qualquer comando da janela que desejarautocmd
, mas a janela será restaurada. Isso é mencionado em:h autocmd-use
. Se você pensar sobre esse comportamento, faz sentido, pois você pode ter vários autocmd anexados a um evento, todos com certas suposições, como o buffer atual. Eu imagino que a maneira de forçar o problema seria agrupar isso no seu comando quickfix. por exemplo:command! Grep -nargs=+ grep <args> | cwindow