Ao usar o grep do VIM, como pular para os resultados?

30

Ao usar o plugin grep para o VIM, posso procurar no diretório atual todas as ocorrências de uma string dentro de um conjunto de arquivos, como este:

:grep Ryan *.txt

Isso gera algo parecido com isto:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

Se eu pressionar enter, ele só me leva de volta ao meu editor. O que eu realmente quero fazer é abrir um desses arquivos e ir para o local onde a string foi encontrada. Existe uma maneira de fazer isso? A parte 1 of 3 me faz pensar que há uma maneira de percorrer os resultados, mas não sei quais comandos estão disponíveis para mim. Alguém pode lançar alguma luz sobre isso?

    
por Marplesoft 22.02.2011 / 05:55

1 resposta

31

Ao pressionar ENTER, você deve estar olhando para a linha 3 do arquivo1.txt. Para pular para a próxima partida, execute :cn ; para pular para a partida anterior, execute :cp . Executar :copen abrirá uma janela contendo a lista de correspondências. Mova o cursor para a correspondência desejada e pressione ENTER para pular para aquela partida.

Para mais informações sobre o uso de :grep , consulte

:help grep
:help quickfix.txt

Digitar :cn e :cp para avançar e voltar na lista de correções rápidas pode ser complicado, então eu uso esses mapeamentos:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

Além disso, o comando :grep não é um plug-in; faz parte do Vim.

    
por 22.02.2011 / 06:18