¿Cómo borro / borro la línea actual en la terminal?

796

Si estoy usando terminal y estoy escribiendo una línea de texto para un comando, ¿hay alguna tecla de acceso rápido o alguna forma de borrar / eliminar esa línea?

Por ejemplo, si mi línea / comando actual es algo realmente largo como:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

¿Hay una tecla de acceso rápido o comando para pasar de lo anterior a:

>

?

Por lo general, presionaré la tecla, y si mi línea actual es nueva en el historial, eso la borrará. Pero si estoy revisando mi historial de comandos a través de la tecla y empiezo a editar o usar esos comandos, solo cambiaré la solicitud al siguiente comando más nuevo en el historial, por lo que no funciona aquí a menos que presione varias veces.

tríada
fuente
66
Atajos para moverse más rápido en la línea de comando Bash Esta página es más ilustrativa y explica mejor, creo
Gab 是 好人

Respuestas:

1494

Puedes usar Ctrl+ Upara despejar hasta el principio.

Puede usar Ctrl+ Wpara eliminar solo una palabra.

También puede usar Ctrl+ Cpara cancelar.

Si desea mantener el historial, puede usar Alt+ Shift+ #para hacer un comentario.


Hoja de trucos del modo de edición Bash Emacs

kev
fuente
231
La línea eliminada por Ctrl-U también es recuperable con Ctrl-Y.
keks
65
Wut? Muy bien, gracias keks y kev, ⌃ + U se elimina todo antes del cursor, ⌃ + K se elimina todo después del cursor, ⌃ + A es ir al comienzo de la línea. Entonces, técnicamente, ⌃ + C es la mejor solución para la pregunta
Binarian
3
Alt-Shift- # no funciona? Pensaron los demás. Alt-Shift- # imprime un carácter> en la terminal
tgkprog
49
Votado por enseñarme la <kbd>...</kbd>etiqueta para mostrar claves en SO.
Samveen
11
@ LưuVĩnhPhúc ESCes su propia tecla modificadora en bash. Se usa para cosas como cancelar la navegación del historial ( CTRL+ r) o intercambiar las últimas dos palabras detrás del cursor ( ESC+ t).
novato
578

Solo para resumir todas las respuestas:

  • Limpia la línea: puedes usar Ctrl+ Upara despejar hasta el principio.
  • Limpie la línea: Ctrl+ E Ctrl+ Upara borrar la línea actual en la terminal
  • Limpie la línea: Ctrl+ A Ctrl+ Kpara borrar la línea actual en la terminal
  • Cancelar el comando / línea actual: Ctrl+ C.
  • Recupere el comando eliminado: Ctrl+ Y(luego Alt+ Y)
  • Ir al comienzo de la línea: Ctrl+A
  • Ir al final de la línea: Ctrl+E
  • Elimine las palabras hacia adelante, por ejemplo, si está en el medio del comando: Ctrl+K
  • Eliminar caracteres a la izquierda, hasta el comienzo de la palabra: Ctrl+W
  • Para borrar todo el símbolo del sistema: Ctrl+L
  • Alternar entre el inicio de la línea y la posición actual del cursor: Ctrl+XX
J4cK
fuente
66
note ctrl-k elimina todo entre el cursor y el final de la línea.
Peter Berg
66
Eliminar la siguiente palabra:Alt + D
cnlevy
1
Alt+ D no funciona por eso no lo he incluido :(
J4cK
1
CTRL + Lborra la pantalla pero mantiene lo que se ha escrito en la línea de comando actual.
Aziraphale
1
Ctrl + Alt + >se mueve al final del historial de entrada, lo cual es perfecto cuando desea cancelar la búsqueda en el historial.
astasiak
165

Tengo la lista completa de accesos directos:

  1. Ctrl+ a Mueve el cursor al inicio de la línea
  2. Ctrl+ e Mueve el cursor al final de la línea
  3. Ctrl+ b Retrocede un personaje
  4. Alt+ b Retrocede una palabra
  5. Ctrl+ f Avanzar un personaje
  6. Alt+ f Avanzar una palabra
  7. Ctrl+ d Eliminar personaje actual
  8. Ctrl+ w Corta la última palabra
  9. Ctrl+ k Corta todo después del cursor
  10. Alt+ d Cortar palabra después del cursor
  11. Alt+ w Corte la palabra antes del cursor
  12. Ctrl+ y Pega el último comando eliminado
  13. Ctrl+ _ Deshacer
  14. Ctrl+ u Cortar todo antes del cursor
  15. Ctrl+ xxAlternar entre la primera posición y la posición actual
  16. Ctrl+ l Borrar la terminal
  17. Ctrl+ c Cancelar el comando
  18. Ctrlr Comando + Buscar en el historial: escriba el término de búsqueda
  19. Ctrl+ j Finaliza la búsqueda en la entrada del historial actual
  20. Ctrl+ g Cancelar la búsqueda y restaurar la línea original
  21. Ctrl+ n Siguiente comando de la historia
  22. Ctrl+ p comando anterior de la historia
tharunkumar
fuente
55
Lo sentimos, pero he proporcionado todas las teclas de acceso directo útiles, en las que 7,8,9,10,11,14,16,17 son las teclas de acceso directo para borrar / eliminar que podemos usar según los requisitos.
tharunkumar
2
Cabe mencionar que CTRL+ L(16.) conserva el contenido de la línea de comando actual.
Aziraphale
en Windows parece que necesita usar Ctrl + Shift + A para ir al inicio de la línea
Gandalf458
3
Falta Ctrl+ h: borra el carácter antes del cursor
peflorencio
22

Ctrl+ A, Ctrl+ Kpara borrar la línea actual en la terminal. Luego puede recuperarlo con Ctrl+ Ysi lo necesita.

Spyros Mandekis
fuente
16

o si estás usando el modo vi, presiona Escseguido decc

para recuperar lo que acaba de borrar, Escy luego p:)

bluTaz
fuente
55
Puede habilitar el modo vi por echo 'set editing-mode vi' >> ~/.inputrc. También funciona en lugares como mensajes de intérprete de Python y algunos clientes SQL
dwurf
11

No estoy seguro de si te encanta, pero utilizo Ctrl+ A(para comenzar la línea) y Ctrl+ K(para eliminar la línea) Estaba familiarizado con estos comandos de emacs, y los descubrí accidentalmente.

Muhammet puede
fuente
10

Una alternativa a Ctrl+ A, Ctrl+ Kes Ctrl+ E, Ctrl+ U.

Andrey Starodubtsev
fuente
6
  • Ctrl+ u: Mover hasta el comienzo de la línea a una memoria cíclica
  • Ctrl+ k: mueve hasta el final de tu línea a un buffer de anillo
  • Ctrl+ w: mueve los caracteres y (múltiples) palabras que quedan del cursor a un búfer en anillo

  • Ctrl+ y: inserta la última entrada de tu buffer de anillo y luego puedes usar Alt+ ypara rotar a través de tu buffer de anillo. Presione varias veces para continuar con la entrada "anterior" en el búfer en anillo.

Ciro
fuente
4

CTRL+ Ry comience a escribir para buscar comandos anteriores en el historial. Mostrará líneas completas.
CTRL+ de Rnuevo al ciclo.

Daniel
fuente
2

Ctrl + W borrará la palabra a la izquierda.

bendangelo
fuente
2

Añadir a la lista:

En el modo Emacs, presionar Esc, seguido de R, eliminará toda la línea.

No sé por qué, simplemente lo encuentro. Tal vez no se usa para eliminar la línea, pero tiene el mismo efecto. Si alguien sabe, por favor dime, gracias :)

Funciona en Bash, pero no funcionará en Fish.

PickBoy
fuente
1
Es el revert-linecomando readline: "Deshacer todos los cambios realizados en esta línea". Está vinculado, por defecto, a M-r(Meta-R), que puede ser Alt-R o Esc R. Esto significa que en realidad no está eliminando la línea, solo cuando estaba vacía para empezar; si se desplaza hacia atrás en su historial de comandos y cambia un comando, luego emita revert-line, volverá a cambiar al comando que era originalmente y no eliminará la línea.
Benjamin W.
2

Para eliminar la línea completa sin importar dónde esté el cursor, puede usar el kill-whole-linecomando, pero no está vinculado de forma predeterminada. Se puede vincular a, por ejemplo, Ctrl+ Alt+ Kinsertando

"\e\C-k": kill-whole-line

en su archivo de inicio de Readline (convencionalmente ~/.inputrc).

Varios comentarios:

  • Para evitar reasignar accidentalmente una secuencia de teclas que ya está en uso para otra cosa, puede verificar todos sus enlaces con bind -P. Verifique el enlace sugerido con

    bind -P | grep '\\e\\C-k'
  • El nombre del archivo de inicio de Readline se toma de la variable de shell INPUTRC. Si no está configurado, el valor predeterminado es ~/.inputrc, o (si eso no existe) /etc/inputrc. Tenga en cuenta que si tiene ~/.inputrc, /etc/inputrcserá ignorado.
  • Para volver a cargar su archivo de inicio de Readline, puede usar Ctrl+ X Ctrl+ R.
  • Enlaces a secciones relevantes del manual:
Benjamin W.
fuente
2

Para limpiar toda la línea (2 formas diferentes):

  • Home, Ctrl+K
  • End, Ctrl+U
Jose1755
fuente
0

Alt+ #comenta la línea actual. Estará disponible en la historia si es necesario.

salmón mate
fuente