no vim, como definir “args” para o resultado de um “grep -l”?
-
06-07-2019 - |
Pergunta
Para ilustrar, aqui está como fazê-lo a partir da linha de comando:
vim `grep "hello" * -Rl`
Isso abre vim com todos os arquivos que têm "Olá" neles (-l dá os nomes de arquivos sozinho). Eu quero fazer a mesma coisa, mas de dentro vim. Conceitualmente, algo como isto (que não funciona):
:args !grep "hello" * -Rl
Estou aberto a completamente diferentes abordagens para alcançar este objectivo; Eu só gostaria que fosse em uma linha (por isso é fácil de editar e refazer).
A resposta é simplesmente usar acentos graves - , mas com uma condição chave A seguir não funciona para mim, por causa dos citações ao redor hello
:
:args `grep "hello" * -Rl`
Mas ele funciona se eu removê-los ou escapar as aspas:
:args `grep hello * -Rl`
:args `grep \"hello\" * -Rl`
(este foi enterrado nos comentários após resposta caos - eu adicionei-los aqui para torná-los mais visíveis, em caso alguém teve este problema)
Solução
Bem, isso funciona para mim:
:args `grep -Rl "hello" *`
Running vim 7.0.305.
Outras dicas
Tente o comando args
:
:ar[gs] `grep -Rl "hello" .`
Se os acentos graves não estão funcionando para você, é você usar você estiver usando uma versão atual do vim?
:version