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.