Verwenden des Scrollrads im GNU-Bildschirm

254

Wie kann ich den GNU-Bildschirm so einrichten, dass das Scrollrad der Maus im Scrollback-Puffer scrollen kann? Ich habe versucht, Google darüber zu informieren, aber die meisten Treffer betrafen, wie Anwendungen im Bildschirm die Verwendung des Scrollrads ermöglichen können.

JesperE
quelle
JesperE - Können Sie die gewählte Antwort ändern? Ich war verwirrt und die Kommentare sind richtig, die andere Antwort ist viel besser.
Geoff
Heutzutage wird kein Bildschirm verwendet, aber die positiven Stimmen scheinen überzeugend genug zu sein. :)
JesperE

Antworten:

359

Ich glaube, Sie können einfach eine Zeile wie diese zu Ihrer hinzufügen ~/.screenrc:

termcapinfo xterm* ti@:te@

Wobei "xterm *" eine Glob-Übereinstimmung Ihres aktuellen BEGRIFFS ist. Um zu bestätigen, dass es funktioniert, ^ A ^ D, um sich von Ihrem Bildschirm zu lösen, dann screen -d -rwieder anzuschließen, dann lseinige Male, und versuchen Sie, zurückzuscrollen. Für mich geht das.


Was ist das für eine Magie? Schauen wir uns die Handbuchseiten an.

screen(1) sagt:

termcapinfo term terminal-tweaks [window-tweaks]
  [..]
  The first argument specifies which terminal(s) should be affected by this
  definition. You can specify multiple terminal names by separating them with
  `|'s. Use `*' to match all terminals and `vt*' to match all terminals that
  begin with "vt".
  [..]
  Some examples:

      termcap xterm*  LP:hs@

  Informs screen that all terminals that begin with `xterm' have firm
  auto-margins that allow the last position on the screen to be updated (LP),
  but they don't really have a status line (no 'hs' -  append  `@'  to turn
  entries off).  Note that we assume `LP' for all terminal names that start
  with "vt", but only if you don't specify a termcap command for that terminal.

Von termcap(5):

String capabilities
    [..]
    te   End program that uses cursor motion
    ti   Begin program that uses cursor motion
Pistos
quelle
28
Ich folgte Pistos 'Vorschlag und es funktioniert teilweise. Wie er beschreibt, kann ich einige Befehle eingeben (um genügend Ausgabe zu erzeugen, um den Bildschirm zu scrollen) und dann mit dem Mausrad durch die vorhergehenden Zeilen zurückblättern. Tatsächlich verwende ich den Bildschirm über Konsole in KDE (im Grunde genommen xterm mit Registerkarten), und die Bildlaufleiste für das Konsole-Fenster funktioniert genauso. Es gibt jedoch ein Problem: Wenn Sie zwischen den Bildschirmfenstern (^ An, ^ Ap) wechseln, wird Ihr Scrollback-Puffer durcheinander gebracht. Der Inhalt aller Fenster, in die Sie wechseln, wird einfach in Ihrem Scrollback-Puffer gespeichert. Das verringert es wirklich.
Ryan B. Lynch
22
Dies rollt jedoch im Befehlsverlauf herum. Ich möchte durch den Ausgabepuffer scrollen.
JesperE
15
@JesperE: Ich habe es auch beim Scrollen des Befehlsverlaufs erlebt (ich verwende das GNOME-Terminal von Ubuntu). Ich habe das Problem behoben, indem ich zu Bearbeiten -> Profileinstellungen -> Scrollen gegangen bin und das Kontrollkästchen "Verwenden Sie Tastenanschläge, um auf einem anderen Bildschirm zu scrollen" deaktiviert habe. Beachten Sie, dass ich immer noch Pistos 'Fix verwenden musste.
Michael Krebs
2
Dies funktioniert nicht nur in OS X Lion, sondern auch in Putty, iSSH und Prompt (von Panic). Diese Zeile sollte in allen .screenrc-Dateien vorhanden sein!
Funroll
20
Dies ermöglicht das Scrollen im Terminal und nicht das Scrollen in der Bildschirmsitzung. Wenn Sie also mit geteilten Regionen arbeiten oder ein Fenster wechseln, können Sie in dieser Region nicht zurückblättern. Stattdessen scrollen Sie in der Terminalausgabe zurück und sehen die Ausgabe so, wie sie war, bevor Sie die Region geteilt oder das Fenster geändert haben .
g_daniel
69

Auf dem Bildschirm müssen Sie zuerst den "Scrollback-Modus" (oder "Kopiermodus") aufrufen, um im Scrollback-Puffer scrollen zu können: Tastenkombination Ctrl- a Escoder Ctrl- a Ctrl-[ . Anschließend können Sie mit den Tasten Auf und Ab (oder Ctrl- b, Ctrl- f, um eine Seite zu verschieben) durch den Verlauf scrollen .

In diesem Modus sollte Ihr Mausrad auch funktionieren, wenn es in anderen Apps funktioniert. Sie beenden den "Scrollback-Modus" mitEsc .

Das Scrollen des Scrollback-Puffers ohne vorheriges Aufrufen des Scrollback-Modus ist wahrscheinlich nicht möglich, ohne den Bildschirm zu ändern. Ich habe noch nie von einer Möglichkeit gehört, auf den Scrollback-Puffer zuzugreifen, abgesehen vom Scrollback-Modus.

sleske
quelle
21
Ja, ich kenne den Scrollback-Modus. Ich hatte gehofft, dass ich nicht manuell in den Scrollback-Modus wechseln muss, um die Maus zu benutzen. Vielen Dank.
JesperE
4
"Scrollback-Modus" ist meiner Meinung nach eher ein inoffizieller Begriff. :) Strg + ein Esc wechselt in den Kopiermodus ; Dieser Modus wurde immer so genannt, da sein Hauptzweck darin besteht, das Hin- und Herkopieren von Text zu ermöglichen. Die Möglichkeit, im Kopiermodus mit dem Mausrad zu scrollen (nb. Funktioniert bei mir nicht), sollte eher als eine Art "zusätzliches Gimmick" angesehen werden, aber nicht als Hauptzweck dieses Modus.
Syntaxfehler
1
@syntaxerror: Nun, die Dokumente nennen es "Copy / Scrollback-Modus" und erwähnen einen "Scrollback-Puffer" ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ). sind beide richtig :-). Wie auch immer, ich habe meiner Antwort "Kopiermodus" hinzugefügt.
Sleske
Toll! Ich wollte das auch tun, aber bevor ich mich auf so alte Antworten einlasse, bin ich dafür bekannt, zuerst zu fragen (obwohl ich weiß, dass die SO / SE-Regeln dies nicht vorschreiben; aber das ist die Sache mit ungeschriebenen Regeln.)
Syntaxfehler
Dies hätte die offizielle Antwort sein sollen. Vielen Dank :)
Linh
24

Der ausgezeichnete Artikel, auf den sich Jon Z bezieht, ist nicht mehr verfügbar, aber ich konnte die Nur-Text-Version aus dem Google-Cache fischen. Ich speichere es hier, falls Google das auch in Zukunft fallen lässt. Der ursprüngliche Beitrag wurde von Mikael Ståldal verfasst, also Kredit, wo Kredit fällig ist.

- -

Verwendung des Mausrads im GNU-Bildschirm

GNU Screen unterstützt Scrollback, aber standardmäßig müssen Sie umständliche Tasten verwenden, um es zu verwenden. Ich möchte Shift-PageUp, Shift-PageDown und das Mausrad zum Scrollen verwenden können, genau wie Sie es in xterm tun können.

Es war nicht einfach, Screen dafür zu konfigurieren, und es beinhaltet die Zusammenarbeit mit dem Terminalemulator. Aber ich habe es endlich geschafft, eine Lösung zu finden, die ziemlich gut funktioniert. Fügen Sie dies Ihrer ~ / .Xresources-Datei hinzu (Sie müssen sich abmelden, damit dies wirksam wird):

XTerm*saveLines: 0
XTerm*vt100.translations: #override \n\
  Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  <Btn4Down>: string(0x1b) string("[5S") \n\
  Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  <Btn5Down>: string(0x1b) string("[5T") \n\
  Shift <KeyPress> Prior: string(0x1b) string("[25S") \n\
  Shift <KeyPress> Next: string(0x1b) string("[25T") \n

Fügen Sie dies dann Ihrer ~ / .screenrc-Datei hinzu:

defscrollback 1000

# Scroll up
bindkey -d "^[[5S" eval copy "stuff 5\025"
bindkey -m "^[[5S" stuff 5\025

# Scroll down
bindkey -d "^[[5T" eval copy "stuff 5\004"
bindkey -m "^[[5T" stuff 5\004

# Scroll up more
bindkey -d "^[[25S" eval copy "stuff \025"
bindkey -m "^[[25S" stuff \025

# Scroll down more
bindkey -d "^[[25T" eval copy "stuff \004"
bindkey -m "^[[25T" stuff \004

Dies funktioniert in xterm. Ich bin nicht sicher, ob es in anderen Terminalemulatoren funktioniert.

Beachten Sie, dass dies die normale Bildlaufunterstützung in xterm deaktiviert. Sie können nur mit Bildschirm scrollen. Möglicherweise möchten Sie xterm wie folgt starten, um immer Screen zu verwenden:

xterm -e screen
Tommi R.
quelle
11

Und um das Scrollrad in einem VIM im GNU-Bildschirm zu verwenden:

[.vimrc]

set mouse=a             " hold shift to copy xterm
set ttymouse=xterm2     " necessary for gnu screen & mouse
edench
quelle
Genial, dies in Kombination mit dem ScreenRC-Trick machte meinen Tag, da ich Awesomewm benutze und Terminals mein Leben sind
Fotios
7

Drücken Sie Ctrl+ agefolgt von[

In der Titelleiste Ihres Terminals sollte jetzt der Kopiermodus angezeigt werden.

Jetzt sollten die Pfeiltasten und das Mausrad wie erwartet funktionieren.

Um zum Normalzustand zurückzukehren, drücken Sie mehrmals die Esc-Taste oder die Eingabetaste.

Peter Crotty
quelle
5

Das Setzen der TERMVariablen auf vt100anstelle von xtermvor dem Ausführen des Bildschirms funktioniert ebenfalls.
Ich benutze das schon lange, funktioniert wie ein Zauber.

Fügen Sie dies zu Ihrem hinzu .bashrc:

# make scrollbar / wheel scrolling work when running screen in gnome-terminal (or other)
if [ "$TERM" = "xterm" ]; then
  export TERM=vt100
fi

- -

Als Referenz hat meine .screenrcdies (wird für diese AFAIK nicht benötigt):

# Extend the vt100 desciption by some sequences.
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
Zitronenqueeze
quelle
Das Einstellen der Umgebungsvariablen TERM wie beschrieben (vor dem Ausführen des Bildschirms) hat bei mir funktioniert. Es ist so einfach wie das Eingeben von "export TERM = vt100". Vielen Dank. PS: Ich bin auf einem Mac, ssh in eine Linux-Box und dort starte ich Bildschirm.
Daniel K.
Wie oben erwähnt, funktioniert dies nicht wie beabsichtigt. Ja, Sie können scrollen, aber Ihr Bildlaufpuffer wird überschrieben, wenn Sie die Fenster wechseln.
Halsafar
sehr unterschätzte Lösung
MolbOrg
4

Folgendes hat sowohl in Cygwin als auch in Putty für mich funktioniert: Bearbeiten Sie .screenrc und fügen Sie hinzu

terminfo xterm* ti=:te=
Torbjör Weiland
quelle
3

Wenn die oben genannten Antworten für Sie nicht funktionieren, stellen Sie sicher , dass Sie keine haben Beschriftung oder die alwayslastline Option Satz in Ihrem .screenrc. Wenn Sie sie haben, wird dies nicht funktionieren:

termcapinfo xterm* ti@:te@

Wenn Sie diese Informationen benötigen, können Sie versuchen, sie im Titel Ihres Terminals festzulegen (mit termcapinfo).

Nachocab
quelle
0

Die Lösung bei Verwendung von "Ubuntu 16.04.2 LTS" lautet wie folgt:

ein). Aktualisieren Sie $ HOME / .screenrc wie in den vorherigen Antworten angegeben:

termcapinfo xterm* ti@:te@

b). Verwenden Sie "Einstellungen". "Bevorzugte Anwendungen", um das Standardterminal in xterm zu ändern, indem Sie das "X-Terminal" in der Dropdown-Liste auswählen.

Einige überflüssige Notizen

  • Keines der anderen Terminals, einschließlich der Installation von "lxterminal", funktionierte für mich, selbst wenn ich die termcapinfo-Zeile in "*" anstelle von "xterm *" änderte.

  • Durch Klicken auf die Menüschaltfläche in der oberen linken Ecke des Bildschirms können Sie das Dialogfeld "Einstellungen" über das dritte Symbol in der unteren rechten Ecke aufrufen.

Malcolm Boekhoff
quelle