Como copio / arranco uma expressão de várias linhas que digitei no prompt do ZSH?

4

Por exemplo, suponho que estou navegando pelo meu histórico e alcanço esse comando de várias linhas que eu digitei anteriormente:

~ >> for f in *; do
echo $f
done

Eu habilitei vim bindings no ZLE ( bindkey -v ), então eu posso digitar Esc neste ponto e usar vim chaves para contornar, mover através de linhas, etc Eu também posso fazer yy para arrancar a linha atual. No entanto, não parece haver uma maneira óbvia de copiar todas essas linhas.

Alguma idéia?

    
por Milind Ganjoo 23.11.2013 / 00:52

1 resposta

4

Existem duas abordagens (reconhecidamente incômodas) que vêm à mente. O primeiro é usar o Vim, o segundo é um pequeno utilitário para o Urxvt (se for o seu emulador de terminal):

  • Enquanto estiver no seu histórico, pressione v para abrir o comando atual no seu $EDITOR (que é o Vim, naturalmente) e depois em Shift v g para selecionar todas as linhas antes de " + * para arrastá-lo para sua área de transferência .

  • Você também pode usar urxvt-perls para essa (e outras) funcionalidades aprimoradas no terminal, incluindo arrancando e colando. Neste caso: Alt Escape para entrar no modo de seleção, Deslocamento v , 2 k para selecionar todas as linhas e y para mandar para o buffer, antes de q para sair. Shift Inserir cola o texto arrancado. 1

A primeira abordagem parece ser a mais direta, supondo que não haja uma maneira simples de fazer isso usando apenas a capacidade de edição de linha do Zsh. 2

1. Essas combinações de teclas são todas configuráveis no seu ~/.Xresources
2. O que não me surpreenderia ...

    
por 23.11.2013 / 01:36