4 votes

Comment ajouter des lignes vides au-dessus du fond dans le terminal

Dans vim et de nombreux autres éditeurs de texte, vous pouvez faire défiler la fin du fichier jusqu'en haut de votre écran tout en affichant le reste des lignes en blanc. Mais dans le terminal, par défaut, la fin de ligne est fixée à la fin de l'écran du terminal, de sorte que votre ligne actuelle apparaît toujours en bas. Comment puis-je faire défiler la ligne actuelle vers le haut tout en ajoutant des lignes vides entre la dernière ligne et le bas de l'écran ?

Merci

5voto

Garry Points 1431

Les séquences d'échappement \e[B y \e[A déplacent le curseur vers le bas et vers le haut, respectivement, en le contraignant dans la fenêtre d'affichage. Les séquences d'échappement \eD (appelé "indice") et \eM ("reverse index") se déplacent également vers le bas et vers le haut, mais font également défiler la fenêtre de visualisation si nécessaire. (Notez l'absence de la fonction [ dans ces derniers).

Je vous recommande d'imprimer quelques caractères d'"index", suivis du même nombre de "curseur vers le haut" (ou "index inversé"). Par exemple :

echo -ne '\eD\eD\eD\e[A\e[A\e[A'

déplace le curseur vers le bas de 3 rangées, en faisant défiler toute la fenêtre si nécessaire, puis le remonte. En fait, il s'assure qu'il y a au moins 3 lignes vides en bas de l'écran.

Vous pouvez le brancher à votre $PS1 (invite primaire Shell), assurez-vous simplement qu'il est encadré entre \[ y \] afin que le Shell sache que ces caractères ne font pas avancer horizontalement le curseur, par ex :

PS1='\[\eD\eD\eD\e[A\e[A\e[A\]prompt$ '

Vous pouvez également choisir de l'imprimer à partir de $PROMPT_COMMAND Dans ce cas, si je me souviens bien, il doit être encadré par une balise 0x01 ( ^A ) et un 0x02 ( ^B ) octet.

Remarque : les raccourcis \e[3A y \e[3B déplacer le curseur vers le haut/bas de 3 rangées (et évidemment vous pouvez remplacer 3 par n'importe quel nombre). Les séquences "index" et "index inverse" ne disposent pas de tels raccourcis.

Je vous laisse le soin de déterminer par programmation le nombre de rangées que vous préférez en fonction de la hauteur du terminal.

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