Bash: eliminar del cursor hasta el final de la línea con un atajo de teclado

91

Considere el siguiente indicador de bash, donde ^denota la ubicación del indicador:

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

Supongamos que quiero comprometerme nuevamente con el mismo error, con un mensaje de confirmación diferente. ¿Hay alguna forma de eliminar el texto desde la posición del cursor hasta el final de la línea?

Adam Matan
fuente

Respuestas:

145

Use Ctrl+ Kpara eliminar del cursor al final de la línea.

Use Ctrl+ Upara eliminar del cursor al comienzo de la línea.

usuario128285
fuente
¿Cuál es la combinación de teclas para poner?
ShooShoSha
@ShooShoSha, prueba Shift + Insert
user128285
¿Cuáles son los significados de K y U? No puedo recordar esto la próxima semana si no sé los significados, ¿cómo recordarlos?
workplaylifecycle
2
@hylepo Dunno, pero mi mnemotécnico es Brexit - the UK leaves Europe: U se elimina al principio y K al final.
Snowcrash
47

Depende de si está utilizando el modo de edición vi ( set -o vi) o emacs ( set -o emacs) dentro de su shell.

Por defecto, su shell por defecto generalmente es el modo de edición de emacs.

  • En el modo emacs, la eliminación al final de la línea se puede lograr usando el comando ctrl- k.

  • Sin embargo, si está utilizando el modo de edición vi en su shell de comandos, puede lograr el mismo resultado escribiendo Esc(que lo colocará en modo de comando) seguido de d- $(si desea eliminar toda la línea, ingrese dd).

Si no está seguro de qué modo de edición está usando actualmente en su shell, ingrese el comando set -odesde la línea de comando y podrá determinar qué modo de edición está usando actualmente:

set -o
...snip...
emacs           on
...snip...
vi              off

Para cambiar el modo de edición de la línea de comandos, simplemente escriba:

set -o vi

o

set -o emacs
Kevin Bowen
fuente
44
Si quieres un mnemotécnico, Ksignifica matar (la línea que comienza desde la posición del cursor).
Gregor Botero
55
En el modo de comando vi, Dfunciona igual qued$
glenn jackman
3
+1 por escribir la respuesta correcta y explicar que los shellopts pueden cambiarlo.
TC1
1
>> gracias. Parece que estoy usando vi, por lo que CTRL + K hace el truco. - Adam Matan Adam, entonces ese es el modo emacs en el que estás, no vi.
catch22
1
En Kubuntu oneiric (konsole), Ctrl + K y ESC Shift + D funcionan. ESC d elimina parte de la línea (quizás hasta un ';'). (Escribir un $ después de eso solo envía el $ a la consola.) He estado tratando de descubrir cómo hacerlo durante bastante tiempo. ¡Gracias!
Joe
3

En caso de que solo esté familiarizado con uno de Zsh y Bash, aquí están las combinaciones de teclas equivalentes que puede necesitar:

golpetazo

bind '"\C-k"':kill-line

zsh

bindkey "\C-k"      vi-kill-eol

Otra información relevante

Para obtener una lista de combinaciones de teclas:

# bash
bind -p

# zsh
bindkey
Sridhar Sarnobat
fuente
Estoy confundido. Para Bash, ¿no debería ser "^k" para Control + K?
wjandrea
Lo siento, ese es mi enlace personal. Hubiera puesto el enlace predeterminado pero no me sentía cómodo con la sintaxis bash. Como mencionaste lo que debería ser, tomé tu palabra y edité mi publicación.
Sridhar Sarnobat
1
Oh ok No estoy familiarizado con él mismo, pero acabo de comprobar y debería ser"\C-k"
wjandrea