Estou digitando um comando, lembro que tenho que verificar alguma coisa, se eu apertar Ctrl+ Uo comando desaparece e posso digitar outra coisa, mas aí o comando que eu estava digitando não fica no histórico.
Existe uma maneira de recuperar esse comando ou um atalho diferente que eu possa pressionar para salvar o comando em algum lugar?
Responder1
Dê uma olhada no push-line
comando ZLE. Este comando envia o conteúdo atual da linha para a pilha de buffer e limpa a linha. Você pode então inserir outro comando e quando o ZLE for inicializado novamente, a linha será removida da pilha de 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á vinculado a Alt/ Escqno modo emacs. Você pode vincular este comando a uma chave diferente com o bindkey
comando. Por exemplo, para vinculá-lo a Alt/ Escv, adicione bindkey '^[V' push-line
ao seu zshrc
.
Responder2
Ctrl+ Yirá colar o último item que você cortou (com Ctrl+ U, Ctrl+ K, Ctrl+ W, etc.).
Responder3
Você está procurando opush-line
comando, que está vinculado a Ctrl+ Qe Esc Qpor padrão. Este comando limpa a entrada e permite inserir outro comando; depois de executar ou cancelar este comando, o comando anterior será trazido de volta para edição.
Com um comando multilinha, push-line
limpa apenas a linha atual e mantém as outras linhas no buffer de entrada. Existe outro comandopush-input
que limpa todo o buffer de entrada, não vinculado a nenhuma chave por padrão.
Eu uso um wrapper em torno deste comando. Digito Ctrl+ Zpara “suspender” o comando que estou digitando e digito outro comando. Depois de executar esse comando (ou abortá-lo com Ctrl+ C), o comando suspenso volta para edição (lembrando até mesmo da posição do cursor). Como uma conveniência adicional, se a linha de comando estiver vazia quando eu digitar Ctrl+ Z, a chave invocará o bg
interno (portanto, um duplo Ctrl+ Zenvia um comando em execução diretamente para o segundo plano).
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 um #
no início da linha atual e pressionar Enter.