¿Cómo guardar el comando actual en zsh?

¿Cómo guardar el comando actual en zsh?

Estoy escribiendo un comando, recuerdo que tengo que marcar algo, si presiono Ctrl+ Uel comando desaparece y puedo escribir otra cosa, pero entonces el comando que estaba escribiendo no está en el historial.

¿Hay alguna forma de recuperar ese comando o algún atajo diferente que pueda presionar para guardar el comando en algún lugar?

Respuesta1

Eche un vistazo al push-linecomando ZLE. Este comando empuja el contenido actual de la línea a la pila del búfer y borra la línea. Luego puede ingresar otro comando y cuando ZLE se inicie nuevamente, la línea se extrae de la pila del búfer al búfer de líneas.

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.

De forma predeterminada, este comando está vinculado a Alt/ Escqen modo emacs. Puede vincular este comando a una clave diferente con el bindkeycomando. Por ejemplo, para vincularlo a Alt/ Escv, agréguelo bindkey '^[V' push-linea su archivo zshrc.

Respuesta2

Ctrl+ Ypegará el último elemento que cortó (con Ctrl+ U, Ctrl+ K, Ctrl+ W, etc.).

Respuesta3

Estas buscando elpush-linecomando, que está vinculado a Ctrl+ Qy Esc Qpor defecto. Este comando borra la entrada y le permite ingresar otro comando; Una vez que haya ejecutado o cancelado este comando, el comando anterior volverá a editarse.

Con un comando multilínea, push-linesolo borra la línea actual y mantiene las otras líneas en el búfer de entrada. Hay otro comandopush-inputque borra todo el búfer de entrada, no vinculado a ninguna clave de forma predeterminada.

Utilizo un contenedor alrededor de este comando. Escribo Ctrl+ Zpara “suspender” el comando que estoy escribiendo y escribo otro comando. Después de ejecutar ese comando (o abortarlo con Ctrl+ C), el comando suspendido vuelve para editarse (incluso recordando la posición del cursor). Como comodidad adicional, si la línea de comando está vacía cuando escribo Ctrl+ Z, la tecla invoca la bgfunción incorporada (por lo que un doble Ctrl+ Zenvía un comando en ejecución directamente al fondo).

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

Un método de baja tecnología que funciona en cualquier shell es agregar un #al principio de la línea actual y presionar Enter.

información relacionada