Como salvar o comando atual no zsh?

Como salvar o comando atual no zsh?

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-linecomando 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 bindkeycomando. Por exemplo, para vinculá-lo a Alt/ Escv, adicione bindkey '^[V' push-lineao 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-linecomando, 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-linelimpa apenas a linha atual e mantém as outras linhas no buffer de entrada. Existe outro comandopush-inputque 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 bginterno (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.

informação relacionada