J'ai un problème qui survient lors de l'utilisation du terminal de Mac OS X (TERM = xterm): parfois, il se met dans un état où les lignes qui défilent en haut ne sont pas ajoutées au tampon de défilement. Je n'utilise pas screen
ou similaire; il s'agit d'un shell bash simple à l'intérieur d'un onglet Terminal.
Il ne le fait pas immédiatement après l'ouverture d'un nouvel onglet. Je crois que c'est un effet secondaire de quelque chose que j'ai exécuté dans l'onglet problème. Je suppose que cela a quelque chose à voir avec l'émulation xterm, peut-être la région de défilement.
Ce qui n'a pas fonctionné:
- Réinitialisation logicielle et matérielle via le menu Shell
- Exécuter
reset
dans l'onglet
Existe-t-il un moyen fiable de réinitialiser le terminal et / ou l'état xterm?
Quelqu'un peut-il expliquer ce qui se passe, même si le seul correctif consiste à fermer l'onglet et à en ouvrir un nouveau?
Réponses:
Cela signifie que le terminal utilise le tampon d'écran alternatif. Il existe un écran principal, qui défile dans le journal de défilement, et un autre écran qui ne le fait pas. Les programmes "plein écran" ou "orientés écran" comme top, less, emacs, vim et screen font basculer le terminal sur l'écran alternatif par défaut.
Chaque écran a son propre contenu et son propre état. Le fait d'avoir un écran alternatif permet aux programmes de reprendre la totalité de l'affichage, puis de restaurer le contenu précédent à leur sortie, en revenant à l'écran principal.
Depuis Mac OS X Lion 10.7, Terminal dispose d'un élément de menu que vous pouvez utiliser pour changer manuellement d'écran:
Ceci est fourni principalement afin que vous puissiez afficher ou copier du texte à partir de l'écran secondaire après la fermeture d'un programme "plein écran". Xterm a une commande similaire.
Vous pouvez également l'utiliser pour forcer manuellement un programme à utiliser un écran particulier, pour contrôler si la sortie va dans le journal de défilement, par exemple. Cependant, si vous utilisez actuellement un programme qui bascule explicitement vers l'écran alternatif, vous pouvez le confondre ou obtenir des résultats inattendus si vous le forcez à l'écran principal pendant que le programme est en cours d'exécution, utilisez donc cela avec prudence.
Selon le programme, il peut avoir un argument de ligne de commande ou un autre moyen pour le configurer pour utiliser l'écran principal à la place. par exemple
less -X
.Certaines entrées terminfo sont spécialement conçues pour supprimer l'utilisation de l'écran alternatif, par exemple
xterm1
.TERM=xterm1 emacs
exécutera Emacs sur l'écran principal. Je ne recommande pas d'utiliser enxterm1
permanence, car il désactive un certain nombre d'autres fonctionnalités utiles par rapport à la valeur par défautxterm-256color
sur Lion.Vous pouvez également changer d'écran en utilisant la
tput
commande pour émettre les séquences d'échappement depuis l'intérieur d'un shell ou d'un script.tput smcup
bascule vers l'écrantput rmcup
secondaire et revient à l'écran principal.Pour voir quel programme est en cours d'exécution, regardez le nom du programme affiché dans la fenêtre Terminal ou le titre de l'onglet, ou regardez la fenêtre Inspecteur ( Shell> Afficher l'inspecteur ). Le dernier processus de la liste dans l'inspecteur est (généralement) le programme en cours à l'aide de l'écran. C'est celui que vous devrez configurer pour utiliser l'écran principal à la place.
la source
tput rmcup
ssh
session sur une machine distante a échoué (expiration?) Pendant que j'étais à l'intérieurvi
, laissant apparemment le terminal dans l'écran alternatif (carvi
on ne m'a jamais donné la possibilité de nettoyer). Par la suite, toute nouvellessh
session dans le même terminal présenterait le problème décrit par l'OP, jusqu'à ce que je résolve le problème en sélectionnant l' élément de menu Affichage> Masquer l'écran alternatif .