Comment faire défiler vers le haut dans la fenêtre du terminal pendant la génération d’une nouvelle entrée sans être renvoyé au fond (Linux)

37

Dans Ubuntu, je veux faire défiler vers le haut pendant qu'une commande est en cours d'exécution dans ma fenêtre de terminal et génère une nouvelle sortie (en réalité, la commande en cours d'exécution est rspec). Je peux faire défiler vers le haut, mais chaque fois que rspec génère une nouvelle ligne de sortie de console, il me renvoie vers le bas. Y a-t-il un moyen de tout faire défiler? J'utilise Terminator sur Linux Mint / Ubuntu 12.04 LTS

MISE À JOUR

J'ai trouvé une solution de contournement possible sur la page d'accueil de Terminator qui dit qu'avec

stty ixon

vous pouvez activer le "contrôle de flux XON / XOFF pour la sortie du terminal. Pouvoir suspendre la sortie en tapant ^ S et le reprendre en tapant ^ Q [...]"

Ce n’est pas tout à fait ce que je voulais, sans avoir à suspendre la sortie (et peut-être à me demander en oubliant de le rallumer), j’ai pensé qu’il pourrait y avoir une simple touche de modification comme shft-alt avec molette de la souris .. Any de meilleures solutions?

Yo Ludke
la source
C'est une des choses que j'aime vraiment chez LXTerminal (LXDE).
Matthew Lundberg le
Faites-vous défiler par Shift-PgUp ou par la barre de défilement?
ott--
@ MatthewLundberg Normalement, avec la molette de la souris, barre de défilement. Mais cela ne fonctionne pas non plus avec shift-pgup :( Puis-je avoir aussi lxterminal à l'intérieur du terminateur, le savez-vous?
Yo Ludke
1
xfce4-terminala une option appelée Scroll on output que vous pouvez décocher et fait exactement ce que vous avez demandé.
Martín Canaval le
1
Pour contourner le problème, vous pouvez envoyer la sortie dans un fichier, ouvrir un autre terminal et l' tail -f file.txtafficher au fur et à mesure de sa génération. Cela laisserait votre premier terminal libre de revenir en arrière et de vous permettre de regarder la sortie en temps réel. Pas élégant je sais.
Terdon

Réponses:

53

Bien que je sois un peu en retard, je poste ceci ici pour que toute personne qui vient ici obtienne une solution. Pour moi, la solution au même problème était:

Préférences Terminator -> onglet Profils -> onglet Défilement [sub] -> décochez l'option "Défilement à la sortie".

La bonne chose à propos de cette option est qu’elle défilera quand même au bas de la sortie, mais dès que vous la remonterez, elle s’arrêtera et ne vous dérangera pas, même si le contenu de la sortie est toujours en cours. généré.

J'espère que ça aide

Chikitulfo
la source
cool :) Est-il possible de créer un raccourci pour basculer cette option?
Yo Ludke
1
J'ai un peu cherché, mais je n'ai trouvé aucun moyen de le basculer avec un raccourci dans le terminateur. Cependant, comme l'option est écrite dans le fichier de configuration du terminateur sous "$ HOME / .config / terminator / config", il devrait être possible d'affecter un raccourci global à une commande qui active ou désactive l'option directement dans le fichier de configuration.
Chikitulfo
4
Néanmoins, cette modification du fichier de configuration n’affectera pas les instances de terminateur déjà en cours d’exécution, mais seulement les nouvelles instances de terminateur lancées après la modification. Donc, si vous voulez basculer sur un terminateur en cours d'exécution, vous devez le faire manuellement, autant que je sache. Dans tous les cas, avec l'option basculée sur false, dès que vous faites défiler l'écran jusqu'à la dernière ligne, le défilement automatique continue en sortie. Il ne cesse le défilement automatique que si vous faites défiler manuellement vers le haut. Je ne vois donc aucun besoin réel d'activer ou de désactiver cette option.
Chikitulfo
1

tail -f log.txt | lessmettra à jour pour avancer à la nouvelle information, et vous pouvez ensuite monter ou descendre. Vous pouvez également utiliser lessles fonctionnalités de recherche, etc. Avec la méthode du canal, vous pouvez également analyser la sortie en mouvement.

Et la même idée, mais sans le tuyau: less +F log.txt.
(Cela suppose que vous puissiez travailler avec votre contenu de cette façon.)

L'ancienne méthode Unix consistait à appuyer sur Ctrl-S dans votre terminal pour arrêter et à Ctrl-Q pour redémarrer le défilement de la sortie - c'est essentiellement ce que le terminateur vous permet de faire stty ixon.
Avec l'ajout de barres de défilement, cela me semble plutôt convenable: appuyez sur Control-S, faites défiler l'écran vers le haut, puis appuyez sur Control-Q pour revenir en arrière. Oui, vous oubliez parfois de mettre la sortie en pause.

Parce que je suis exceptionnellement paresseux et que j'aime la flexibilité de la redirection de sortie, j'utiliserais tail -f avec le tube (en supposant que cela convienne). Ensuite, je peux l'arrêter, la flèche vers le haut et ajouter quelque chose comme un grep, et il fonctionne toujours: tail -f tac_plus.log | less | egrep 'peerip'

Jetez des cats et teededans et vous avez une vraie fête.

Belacqua
la source
Je voulais utiliser ceci pour les spécifications rspec - Le problème, c'est qu'avec les approches queue / moins, les couleurs sont perdues (la sortie est en noir et blanc au lieu de vert / rouge si
j'exécute
@YoLudke Je ne connais pas bien rspec ni comment il colorie. Il existe des moyens de passer des couleurs via grep, etc., mais cela pourrait ne pas fonctionner ici. Faites-vous quelque chose comme exécuter pointer rspec vers un processus persistant / en boucle / long, et en tirer votre sortie?
Belacqua