Ctrl + Y irá colar o último item que você cortou (com Ctrl + U , Ctrl + K , Ctrl + W , etc.).
Eu estou digitando um comando, eu lembro que tenho que checar alguma coisa, se eu pressionar Ctrl + U o comando desaparece e eu posso digitar outra coisa, mas então comando que eu estava digitando não está no histórico.
Existe uma maneira de recuperar esse comando ou um atalho diferente que eu possa pressionar para salvar em algum lugar o comando?
Dê uma olhada no comando push-line
ZLE. Esse comando envia o conteúdo atual da linha para a pilha de buffers e limpa a linha. Você pode então digitar outro comando e quando o ZLE for iniciado novamente, a linha será disparada da pilha do buffer para o buffer de linha.
prompt@world$ cp abc /mnt/usr/bin # The user presses Esc-q
prompt@world$ # The line is cleared
prompt@world$ mount -v /dev/sdb1 /mnt # And the user can enter another command
mount: /dev/sdb1 mounted on /mnt
prompt@world$ cp abc /mnt/usr/bin
# The first command is popped off of the stack
# as soon as ZLE comes back.
Por padrão, este comando está ligado a Alt / Esc q no modo emacs. Você pode ligar este comando a uma chave diferente com o comando bindkey
. Por exemplo, para ligá-lo a Alt / Esc v , adicione bindkey '^[V' push-line
ao seu zshrc
.
Você está procurando o comando push-line
, que é ligado a Ctrl + Q e Esc Q por padrão. Esse comando limpa a entrada e permite inserir outro comando; uma vez que você tenha executado ou cancelado este comando, o comando anterior é trazido de volta para edição.
Com um comando multilinha, push-line
apenas limpa a linha atual e mantém as outras linhas no buffer de entrada. Existe outro comando push-input
que limpa todo o buffer de entrada, não vinculado a nenhuma chave por padrão.
Eu uso um wrapper em torno desse comando. Eu digito Ctrl + Z para “suspender” o comando que estou digitando e digite outro comando. Depois de executar esse comando (ou abortar com Ctrl + C ), o comando suspenso volta para edição (lembrando-se da posição do cursor). Como uma conveniência adicional, se a linha de comando estiver vazia quando eu digito Ctrl + Z , a tecla invoca o bg
embutido (então um duplo Ctrl + Z envia um comando em execução diretamente para o fundo).
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
Um método de baixa tecnologia que funciona em qualquer shell é adicionar #
no início da linha atual e pressionar Enter .
Tags zsh keyboard-shortcuts