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-line
comando 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 bindkey
comando. Por ejemplo, para vincularlo a Alt/ Escv, agréguelo bindkey '^[V' push-line
a su archivo zshrc
.
Respuesta2
Ctrl+ Ypegará el último elemento que cortó (con Ctrl+ U, Ctrl+ K, Ctrl+ W, etc.).
Respuesta3
Estas buscando elpush-line
comando, 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-line
solo borra la línea actual y mantiene las otras líneas en el búfer de entrada. Hay otro comandopush-input
que 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 bg
funció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.