Encontro-me fazendo o seguinte quase todos os dias
- Executar uma busca (
find -name somefile.txt
) - Abra o resultado em
vim
O problema é que eu tenho que copiar e colar o resultado da find
no vim
comando. Existe alguma maneira de evitar ter que fazer isso? Eu experimentei um pouco ( find -name somefile.txt | vim
), mas não encontrei nada que funcione.
desde já, obrigado
vim `find -name somefile.txt`
. @StuartPowers Alternativamente, você pode usarvim `!-1`
se você já usou esta descoberta foi que você comando anteriorTente o seguinte:
:r!find /<path> -name 'expression'
Os resultados devem aparecer no vim quando a pesquisa estiver concluída.
Ou
Experimentar:
fonte
Se você não se importa de executar o comando novamente: pressione Upe acrescente um
xargs
comando. Ou use a substituição do histórico e executeExiste uma maneira leve de salvar a saída de um comando que funciona no ksh e zsh, mas não no bash (requer que o lado de saída de um pipeline seja executado no shell pai). O tubo de comando para a função
K
(definição zsh abaixo), que k PEE sua saída na variável$K
.Salvar automaticamente a saída de cada comando não é realmente possível apenas com o shell; é necessário executar o comando em um terminal emulado. Você pode fazer isso executando dentro
script
(um utilitário BSD, mas disponível na maioria dos departamentos, incluindo Linux e Solaris), que salva toda a saída da sua sessão através de um arquivo (ainda é necessário um pouco de esforço para detectar com segurança o último prompt no texto datilografado )fonte
Eu gosto de usar os ticks de volta `(está na mesma tecla que o ~)
O back ticks executa o comando dentro dos ticks e a saída pode ser usada pelo comando. O acima irá encontrar todos os arquivos somefile.txt, permitindo que você use
:next
para percorrer todos os arquivos.É muito útil se você gastar algumas tentativas para refinar o comando, porque poderá usar a substituição do histórico para repetir o comando para o editor.
fonte
Eu devo ter esquecido o ponto aqui, porque eu usaria:
(se eu soubesse que havia apenas um no meu
:echo &path
) ou se quisesse todos eles:Edit: Uau! Ok, então eu fiz perder o ponto - você deseja que a lista de procura, não os arquivos reais de abrir? Tente (novamente, de dentro do Vim):
-- minha culpa :)
fonte
Como @davidmh apontou nos comentários, você pode usar
xargs
com o sinalizador-o
se desejar usar um aplicativo interativo.Se você não usar
-o
, provavelmente irá atrapalhar o estado do terminal depois de sair do vim. Se você tiver feito isso, poderá redefinir seu terminal com o seguinte comando:fonte
Eu escrevi uma função
pvim
que faz o que você quer. Se várias linhas forem canalizadas parapvim
ele, ignorando todas, exceto a primeira, ela poderá ser estendida para abrir vários arquivos no vim.Use-o como:
que carregará o primeiro "foo.txt" no vim como se você tivesse digitado:
vim $(find . -name "foo.txt | head -n1")
fonte
Aqui está uma
xargs
solução mais simples que as já mencionadas:A
-p
opção dizvim
para abrir cada arquivo em uma guia separada. Acho isso mais conveniente do que usar buffers.fonte
Descobri que abrir um arquivo com a ajuda do
locate
in vim é extremamente conveniente e muito mais rápido quefind
.O comando a seguir pesquisa um arquivo chamado
app.py
no caminho que contém o diretórioMyPythonProject
.fonte