Horizontales Scrollen im Terminal

12

Es gibt also meiner Meinung nach bereits 2 Fragen dazu. Alle haben damit zu tun tail -fund daher geben die Menschen die tangentiale Antwort "weniger verwenden".

Ich brauche es für alles, jeden Befehl usw. Das Problem ist, dass ich viele Konsolenfenster ausführen muss und sie auch bei mehreren Monitoren verkleinern muss. Infolgedessen wird fast jede Ausgabe durch Zeilenumbruch geschlachtet und ist schwer zu lesen.

Eine vorgeschlagene Lösung ist echo -ne '\e[?7l', was etwas funktioniert. Das Problem ist nun, gibt es eine Möglichkeit, Bildlaufleisten auf einer Konsole abzurufen?

Ubuntu 12.10, Terminal

srcspider
quelle
Als Beispiel (als Antwort auf alle Kommentare zu "So funktionieren Terminals nicht"!) Würde ich darauf hinweisen, dass die Ubuntu Console für Windows diese Funktion unterstützt. Anwendungen wie lsund mceditfunktionieren einwandfrei, da Bildschirmbreite und Pufferbreite getrennt behandelt werden.
cz vor

Antworten:

10

Was Sie fragen, ist ein Terminal mit unendlicher Breite, von dem ein Teil angezeigt wird. Es ist nicht so, wie Terminals traditionell funktionieren oder wie Anwendungen erwarten, dass sie funktionieren.

Wenn das Terminal beispielsweise eine unendliche Breite hat, wie sollen visuelle Anwendungen funktionieren, wenn sie etwas in der Mitte des Bildschirms anzeigen möchten?

Sie können jedoch GNU verwenden screen(Sie sollten in der Lage sein, eine Bildschirmsitzung von mehreren Terminals unterschiedlicher Größe aus anzuhängen, damit der Bildschirm weiß, wie ein kleines Fenster eines größeren Terminals angezeigt wird) und die screenFensterbreite auf etwas einstellen sehr groß und täuschen Sie dann visuelle Anwendungen vor, dass die Bildschirmbreite die ursprüngliche ist.

Wie (innerhalb screen)

c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"

Einige visuelle Anwendungen funktionieren einwandfrei, andere nicht so gut (für die Installation, wenn sie relativ positioniert sind oder wenn sie sich auf die Terminalumhüllung verlassen). vimscheint in Ordnung zu funktionieren.

Dann werden die Daten zu blättern , und kopieren und einfügen, die einzige Möglichkeit ist , verwenden screen‚s Kopie - Modus. ( <prefix>]) Und die Cursor bewegen (siehe info -f screen -n Movementin bewegten um Kopie - Modus).

tmux kann ähnliche Fähigkeiten haben.

Dieser terminatorTerminal-Emulator (Java-basiert), der nicht terminatormit Ubuntu geliefert wird, macht genau das mit einer unendlichen Terminalbreite:

  • Zeilen werden niemals umbrochen
  • Visuellen Anwendungen wird mitgeteilt, dass die Bildschirmbreite das ist, was in das Fenster passt, nicht unendlich.
  • Es würde auch besser funktionieren als die oben beschriebene screenbasierte Lösung, da der Terminfo-Eintrag behauptet, dass kein Zeilenumbruch durchgeführt wird, sodass Anwendungen dies wissen und BS am Anfang der Zeile nicht zum Ende der vorherigen Zeile verschoben wird.
Stéphane Chazelas
quelle
Ich bin bereits in einer GUI-Umgebung. Wenn ich also eine Datei in einem visuellen Editor öffnen möchte, kann ich einfach eine GUI-Datei vom Terminal aus starten. Es ist ohnehin einfacher, sie zu kopieren, als in einem Terminal, da Sie nicht einfach einen Block in einem Terminal ziehen können, ohne dass er abgeschnitten wird. Laufende screen -X width -w 1000Renditen No screen session found., irgendwelche Ideen?
srcspider
@srcspider Wie gesagt, du musst das innerhalb tun screen. Beginnen Sie screenzuerst.
Stéphane Chazelas
okey ich denke ich verstehe dich jetzt, im Grunde sollte ich rennenscreen -X width -w 1000 <mycommand>
srcspider
1
@srcspider. Nr. screenIst ein terminalbasierter Terminalemulator. Sie müssen es also zuerst wie zuerst xtermoder gnome-terminalzuerst starten , indem Sie den screenBefehl ausführen. In diesem neuen Terminalemulator führen Sie dann diesen screen -XBefehl aus, um screendie Fensterbreite zu ändern. Siehe auch meine bearbeitete Antwort für den terminatorEmulator, die Sie vermutlich bevorzugen werden.
Stéphane Chazelas
Vielen Dank! Auch wenn ich sie irgendwie nicht zum Arbeiten bringe, weiß ich jetzt zumindest, warum ich sie nicht dazu bringen kann, so zu arbeiten.
srcspider
6

Während Emacs in erster Linie ein Editor und IDE¹ ist, passt es sehr gut zu Ihrem Problem. Sie können ein Programm in einem Emacs-Fenster ausführen, und Emacs zeigt es in einem dummen Terminal mit unendlicher Breite und Höhe an. Befindet sich der Cursor am Ende des Puffers, wird das Fenster gescrollt, während das Programm eine Ausgabe erzeugt. Wenn Sie den Cursor bewegen, bleibt das Fenster stehen, wenn die Ausgabe wächst.

Geben Sie M-x shell RET(dh Alt+ x shell Return) ein, um eine Shell in einem Emacs-Puffer zu starten. Geben Sie C-u M-x shell REToder ein M-1 M-x shell RET, um eine andere Shell zu starten. Sie können in jeder Shell ein Programm ausführen und die Puffer nach Belieben in mehreren Fenstern anordnen.

¹ Manchmal wird gesagt, es sei ein besseres Betriebssystem als ein Editor, aber nur von Leuten, die es nicht verwenden - das ist nur ein Witz.

Gilles 'SO - hör auf böse zu sein'
quelle