Como posso usar a saída de um comando sem usar o mouse?

6

Imagine que você emitiu um comando find e agora deseja usar uma linha da saída resultante como argumento.

$ find ..
fileA
fileB
$ vi <CURSOR>   # now do what to achive:
$ vi fileB      

Solução atual: Clique duas vezes em arquivoB (a seleção é estendida automaticamente) e pressione o botão do meio do mouse (cole no X). Funciona, mas usa o mouse.

Soluções possíveis:

  1. Conclusão de tabulação - Funciona na maioria dos shells, mas apenas para arquivos.
  2. Conecte o shell - Como scm_breeze ; Isso é basicamente o que eu procuro, mas é limitado ao git.
  3. Use screen - Muito perto, mas ainda muitos toques de tecla. E precisa de screen ....
  4. armazena a saída na variável bash (GMaster) - Isso só funciona se o comando find exibir uma linha. Como acesso a segunda linha como no exemplo?
  5. canaliza o comando para o editor (jasonwryan) - Funciona, mas executa o comando duas vezes. Isso pode ser demorado ou até impossível.
  6. use a Expansão Dynamic Abbrev do emacs (Arkadiusz Drabczyk, Michael Vehrs) - É o que estou procurando, mas não gostaria de começar com o emacs.

Solução para mim: "Expansão Dinâmica da Abbrev". Agora eu tenho o nome desse recurso que eu estava procurando. Vou começar uma nova pergunta sobre como obter o "dabbrev-expand" em outros softwares:

link .

Visão da melhor solução para mim: Algo como o modo hint de vimperator ou easymotion no Vim, para extrair texto da saída do terminal atual.

    
por Tristan 03.05.2016 / 01:37

2 respostas

3

Use emacs , inicie um shell inferior e emita seu comando. A saída estará disponível no buffer do shell e pode ser selecionada usando os comandos usuais. Alternativamente,

select file in $(find <whatever>); do vi $file; break; done

A abordagem emacs é mais prática se você já conhece o editor. Emacs pode executar "processos inferiores" arbitrários, ie. comandos interativos com suas entradas e saídas conectadas a um buffer do emacs. Então, M-x shell-mode inicia um shell inferior, você digita o comando find e a saída desse comando está disponível no buffer

$ find .. -name "*.sh"
../self.sh
../scheme/random.sh
../scheme/sample.sh

Agora, mova o cursor para o arquivo em que está interessado e digite M-x find-file-at-point para editar esse arquivo em um buffer diferente.

    
por 03.05.2016 / 07:41
0

Existe um plugin Zsh criado especificamente para o que você solicita: link

    
por 22.05.2016 / 22:03