Accidentalmente escribí ctrl+ Len el terminal y mi ventana de terminal saltó un tamaño 'screenful'. Miré los atajos de teclado en "Editar" -> "Atajos de teclado" y no encontré ese atajo.
¿Qué hace ctrl+ Ly dónde se define?
command-line
shortcut-keys
Parto
fuente
fuente
clear
, ya que no borra el historial de terminal, mientras que el comandoclear
hace, a menos que agregue el-x
argumento, así:clear -x
.Si el shell que está utilizando no lo está interceptando, está escribiendo un carácter "Alimentación de formulario" en su terminal. Si la aplicación de terminal no intercepta o utiliza la combinación de teclas de alguna manera, Ctrl+ Letra se traduce al código ASCII de la letra menos 64 (1). 65 es el código ASCII de 'A', 'L' es la duodécima letra -> código 76. Si el shell no sabe qué hacer con el código, lo imprime.
La impresión de un FF char dio como resultado una nueva página en una impresora de línea y una pantalla clara en el terminal (sí, usé un VT-52 en ese entonces, a 300 baudios).
Entonces Ctrl+ Les 12, que es FF. Del mismo modo, Ctrl+ Ies una TAB y Ctrl+ Gtoca el timbre --- si el terminal o el shell no lo interceptan, como Ctrl+ Cpor ejemplo.
Aviso de la otra respuesta: parece que fiesta hacen de intercepción CTRL- Ly hacer un
clear
. ¡bash
Qué lindo toque que los autores asociaron la tecla con un comando que hará más o menos lo mismo que el código ASCII en terminales antiguas!Por otro lado, en mi
zsh
la combinación CTRL- Ifunciona como TABy CTRL- Hcomo a Backspace(2).Viejo y agradable ASCII ... (observe que la letra L está en la columna 4, fila 12, tiene el código ASCII 4 * 16 + 12 = 76).
Imagen original aquí , del artículo de Wikipedia en ASCII .
Notas al pie:
(1) Ctrlrealmente se usa para borrar el bit 7.
(2) esta es la fuente de la broma de "no eliminar la palabra" que a veces encuentras como, por ejemplo, "esta fue una mala idea ^ H ^ H ^ Hnot so nice" ... (¡normalmente una palabra más fuerte que mala!)
fuente
^H
s o^W
s literales es bueno cuando no puedes usar tachado. :)Control-L
es interceptado e interpretado por bash (en realidad, por lareadline
biblioteca , que maneja la edición interactiva en la línea de comando). Está vinculado a laclear-screen
función, como escribió @souravc.Nota sobre el significado de
Control-L
: Se define como Feed de formulario en la tabla de caracteres ASCII, pero esto no significa nada a menos que algún programa lo interprete en consecuencia. El terminal no borra la pantalla cuando ve un avance de formulario, como puede verificar guardando un ^ L en un archivo e imprimiéndolo concat
. Cuandobash/readline
ve el^L
, ejecuta laclear-screen
función. Esto envía una secuencia de caracteres que entiende su emulador de terminal (como se describe por termcap o terminfo), y tiene el efecto de borrar la pantalla.En impresoras muy antiguas, a
^L
avanzaría el papel para comenzar a imprimir en la siguiente hoja, de ahí el nombre "alimentación de formulario". Pero los terminales modernos y los emuladores de terminales siguen un estándar ANSI más nuevo, en el que los comandos de control son "códigos de escape" de varios caracteres que comienzan con^[
(escape). Cuando bash ve tu^L
, probablemente esté enviando la secuencia de dos comandosESC [ H ESC [ J
, que se mueve a la parte superior izquierda de la pantalla y borra todo lo que está debajo (de ahí toda la pantalla).fuente
ESC [ ESC [ J
también borra el historial de comandos, mientras que laCTRL + L
secuencia no. La secuencia enviado a la terminal es más bienESC [ H ESC [ 2 J
, adelante un intento usted mismo con este comando:printf "\033[H\033[2J"
.Como todos ya explicaron bastante bien qué Ctrl+ Les y hace, pero nadie explicó cómo "revertir" el comando, aquí hay algunos comandos que puede escribir para volver a lo que estaba haciendo:
te dará los últimos 20 comandos que escribiste.
le dará las últimas 20 líneas de salida de cualquier instalación de paquete que estaba realizando
fuente