vim / emacs plugin para ver os resultados da pesquisa de busca grep recursiva?

1

Suponha que eu tenha um arquivo formatado assim:

file1:123
file2:4444
some/other/file:2233

Isso representa os resultados da pesquisa de um comando grep (ou seja, o formato file:line-number ).

Gostaria de ter um plug-in vim que me permita navegar rapidamente por esses hits. Ele exibiria uma janela de dois painéis (dividida horizontalmente) com o painel superior exibindo os hits e o painel inferior exibindo o hit selecionado no momento. Alterar a seleção no painel superior exibe o arquivo especificado no número de linha indicado no painel inferior.

Alguém se depara com algo assim? Eu até consideraria uma solução não-vim (programa emacs / dedicado, ...).

    
por EER 21.06.2011 / 23:48

3 respostas

4

No Emacs, abra os resultados do grep e execute M-x grep-mode .

Se você salvou os resultados do grep em um arquivo que não está no diretório em que você executou o grep, será necessário executar M-x cd para mudar para o diretório correto.

A saída grep precisa conter um : após o número da linha, ou seja, você precisa ter file_name:line_number:text , em que text é opcional, mas o segundo : não é. Você poderia mudar isso sintonizando grep-regexp-alist .

Claro, se você executar M-x grep , tudo isso funcionará automaticamente.

    
por 22.06.2011 / 00:30
3

No modo de comando vim :

Para grep interno,

:vimgrep pattern-to-search files
:copen

veja :help vimgrep para ajuda.

Para grep externo,

:grep pattern-to-search files
:copen

veja :help grep para ajuda.

    
por 22.06.2011 / 02:07
1

O Emacs suporta isso através dos comandos rgrep e lgrep (digite M-x rgrep ou M-x lgrep , onde M-x é a notação do Emacs para Alt + x ), que estão incluídos no Emacs pelo menos desde a versão 22. O comando rgrep executa uma busca grep recursiva, enquanto lgrep é limitada para arquivos em um único diretório.

Eles exibem os resultados do grep em um painel separado, um por linha; você pode navegar pelos resultados por:

  • clicando em uma linha de resultado (abrirá o arquivo relevante em outra janela) ou

  • pressionando repetidamente C-x ' ( Ctrl + x seguido pela tecla back-tick): cada vez que você apertar esta combinação de teclas, o O painel atual exibirá o próximo hit grep no lista. texto enfatizado

Mais informações no manual do GNU Emacs, capítulo "Pesquisa do Grep"

Nota: Na terminologia do Emacs, um painel é chamado de janela , e uma janela é chamada de quadro .

    
por 22.06.2011 / 00:27