49 votes

Ctrl+L dans le terminal

J'ai accidentellement tapé ctrl + L dans le terminal et ma fenêtre de terminal s'est agrandie d'une taille d'écran. J'ai regardé les raccourcis clavier dans "Edition"->"Raccourcis clavier" et je n'ai pas trouvé ce raccourci.

Qu'est-ce que ctrl + L et où est-il défini ?

67voto

sourav c. Points 40637

ctrl + L efface simplement l'écran du terminal.

Il s'agit du raccourci clavier équivalent à la commande clear -x . ref

Il est la propriété de bash Vous ne l'avez donc pas trouvé sous raccourcis clavier dans votre gnome-terminal. A partir de man bash :

clear-screen (C-l)
          Clear the screen leaving the current line  at  the  top  of  the
          screen.   With  an  argument,  refresh  the current line without
          clearing the screen.

Voir la liste détaillée des Raccourcis clavier de Bash .

20voto

Rmano Points 30303

Si le Shell que vous utilisez ne l'intercepte pas, vous tapez un caractère "Form-feed" dans votre terminal. Si l'application du terminal n'intercepte pas ou n'utilise pas la touche d'une manière ou d'une autre, Ctrl +Lettre est convertie en code ASCII de la lettre moins 64(1). 65 est le code ASCII de 'A', 'L' est la 12ème lettre -> code 76. Si le Shell ne sait pas quoi faire du code, il l'imprime.

L'impression d'un caractère FF entraînait l'affichage d'une nouvelle page sur une imprimante ligne et d'un écran clair sur le terminal (oui, j'ai utilisé une imprimante de type VT-52 à l'époque, à 300 bauds).

Donc Ctrl + L est de 12, ce qui correspond à FF. De la même manière, Ctrl + I est un TAB, et Ctrl + G sonne la cloche --- si le terminal ou le Shell ne l'intercepte pas, comme Ctrl + C par exemple.

Remarquez dans l'autre réponse : il semble que bash faire intercepter CTRL - L et faire un clear . Il est intéressant de noter que le bash Les auteurs ont associé la touche à une commande qui fera plus ou moins la même chose que le code ASCII sur les anciens terminaux !

D'autre part, dans mon zsh la combinaison CTRL - I fonctionne comme TAB y CTRL - H en tant que Backspace (2).

Le vieil ASCII sympa... (remarquez que la lettre L est en colonne 4, ligne 12, elle a le code ASCII 4*16+12=76).

Image from Wikimedia commons

Image originale aquí , à partir de Article de Wikipédia sur l'ASCII .


Notes de bas de page :

(1) Ctrl est réellement utilisé pour effacer le bit 7.

(2) c'est la source de la blague "ne pas enlever le mot" que l'on trouve parfois comme par exemple "c'était une mauvaise^H^H^H^Pas si bonne idée"... (avec normalement un mot plus fort que mauvais !)

7voto

alexis Points 1018

Control-L est interceptée et interprétée par bash (en fait par les readline bibliothèque qui gère l'édition interactive sur la ligne de commande). Il est lié à l'élément clear-screen comme l'a écrit @souravc.

Note sur la signification de Control-L : Il est défini comme Form Feed dans la table des caractères ASCII, mais cela ne signifie rien si un programme ne l'interprète pas en conséquence. Le terminal n'efface pas l'écran lorsqu'il voit un saut de page, comme vous pouvez le vérifier en enregistrant un ^L dans un fichier et en imprimant le fichier avec cat . Quand bash/readline voit le ^L il exécute le clear-screen fonction. Cette fonction envoie une séquence de caractères qui est comprise par votre émulateur de terminal (tel que décrit par termcap ou terminfo) et a pour effet d'effacer l'écran.

Dans les très anciennes imprimantes, un ^L faisait avancer le papier et commençait l'impression sur la feuille suivante, d'où le nom de "form feed". Mais les terminaux modernes et les émulateurs de terminaux suivent une norme ANSI plus récente, dans laquelle les commandes de contrôle sont des caractères multiples. "codes d'échappement" qui commencent par ^[ (s'échapper). Lorsque bash voit votre ^L il envoie probablement la séquence de deux commandes ESC [ H ESC [ J qui se déplace en haut à gauche de l'écran et efface tout ce qui se trouve en dessous (donc tout l'écran).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X