Usando la rotella di scorrimento nella schermata GNU


254

Come posso impostare la schermata GNU per consentire alla rotellina del mouse di scorrere nel buffer di scorrimento? Ho provato a Google su questo, ma la maggior parte dei successi sono stati su come consentire alle applicazioni all'interno dello schermo di utilizzare la rotellina di scorrimento.


JesperE - Puoi cambiare la risposta scelta? Mi sono confuso, e i commenti sono giusti, l'altra risposta è decisamente migliore.
Geoff,

Oggigiorno non si usa lo schermo, ma i voti sembrano abbastanza convincenti. :)
JesperE

Risposte:


359

Credo che puoi semplicemente aggiungere una linea come questa alla tua ~/.screenrc:

termcapinfo xterm* ti@:te@

Dove "xterm *" è una corrispondenza globale del tuo attuale TERM. Per confermare che funziona, ^ A ^ D per staccare dallo schermo, quindi screen -d -rricollegarlo, quindi lsalcune volte e provare a scorrere indietro. Per me funziona.


Cos'è questa magia? Bene, consultiamo le pagine del manuale.

screen(1) dice:

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.

Da termcap(5):

String capabilities
    [..]
    te   End program that uses cursor motion
    ti   Begin program that uses cursor motion

28
Ho seguito il suggerimento di Pistos e funziona parzialmente. Come egli descrive, posso inserire alcuni comandi (per produrre un output sufficiente per scorrere lo schermo), quindi usare la rotellina del mouse per scorrere indietro tra le righe precedenti. In effetti, sto usando lo schermo tramite Konsole in KDE (xterm a schede, in pratica) e la barra di scorrimento per la finestra di Konsole funziona allo stesso modo. Ma c'è un problema: se si passa tra le finestre dello schermo (^ An, ^ Ap), il buffer di scorrimento viene incasinato. Il contenuto di tutte le finestre in cui si passa verrà semplicemente 'nascosto' nel buffer di scorrimento. Questo lo diminuisce davvero.
Ryan B. Lynch,

22
Ma questo scorre nella cronologia dei comandi. Voglio scorrere il buffer di output.
JesperE,

15
@JesperE: L'ho sperimentato scorrere anche la cronologia dei comandi (sto usando il terminale GNOME di Ubuntu). Ho risolto andando su Modifica -> Preferenze profilo -> Scorrimento e deselezionando "Usa i tasti per scorrere su una schermata alternativa". Nota che avevo ancora bisogno di usare la correzione di Pistos.
Michael Krebs,

2
Oltre a lavorare in OS X Lion, funziona anche con Putty, iSSH e Prompt (di Panic). Questa riga dovrebbe essere presente in tutti i file .screenrc!
funroll,

20
Ciò consente lo scorrimento nel terminale e non lo scorrimento nella sessione dello schermo. Vale a dire se lavori con le regioni divise o cambi una finestra non sarai in grado di scorrere indietro in questa regione e invece scorrerai indietro nell'output del terminale e vedrai l'output com'era prima di dividere la regione o cambiare la finestra .
g_daniel,

69

Nella schermata, è necessario prima accedere alla "modalità di scorrimento" (o "modalità di copia") per poter scorrere nel buffer di scorrimento: combinazione di tasti Ctrl- a Esc, o Ctrl- a Ctrl- [. Quindi puoi scorrere la cronologia usando i tasti Su e Giù (o Ctrl- b, Ctrl- fper spostare una pagina).

In quella modalità, anche la rotellina del mouse dovrebbe funzionare, se funziona in altre app. Si termina la "modalità di scorrimento" con Esc.

Per quanto riguarda lo scorrimento del buffer di scorrimento senza prima accedere alla modalità di scorrimento, probabilmente non è possibile senza modificare la schermata. Non ho mai sentito parlare di un modo per accedere al buffer di scorrimento, a parte la modalità di scorrimento.


21
Sì, conosco la modalità di scorrimento. Speravo che non avrei dovuto accedere manualmente alla modalità di scorrimento per utilizzare il mouse. Grazie.
JesperE,

4
"Modalità scrollback" è piuttosto un termine non ufficiale IMHO. :) Ctrl + a Esc entrerà nella modalità di copia ; questa modalità è sempre stata chiamata così, poiché il suo scopo principale è quello di rendere possibile la copia del testo avanti e indietro. La possibilità di scorrere con la rotellina del mouse in modalità copia (nb. Non funziona per me) dovrebbe piuttosto essere vista come una sorta di "espediente aggiuntivo", ma non come lo scopo principale di questa modalità.
syntaxerror,

1
@syntaxerror: Beh, i documenti lo chiamano "modalità copia / scorrimento" e menzionano un "buffer di scorrimento" ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ), quindi immagino che noi ' sono entrambi giusti :-). Comunque, ho aggiunto "modalità copia" alla mia risposta.
sleske,

Grande! Volevo fare anche questo, ma prima di incasinare risposte così vecchie, sono noto per averlo chiesto per primo (anche se sono consapevole che le regole SO / SE non lo prescrivono; ma è la cosa con regole non scritte.)
syntaxerror

Questa avrebbe dovuto essere la risposta ufficiale. Grazie :)
Linh,

24

L'eccellente articolo a cui si riferisce Jon Z non è più disponibile, ma sono stato in grado di pescare la versione di solo testo dalla cache di Google. Lo sto salvando qui nel caso in cui Google lo abbandoni anche in futuro. Il post originale era di Mikael Ståldal, quindi il credito dove il credito è dovuto.

-

Come usare la rotellina del mouse nella schermata GNU

Lo schermo GNU ha il supporto per lo scrollback, ma per impostazione predefinita devi usare i tasti scomodi per usarlo. Vorrei poter usare Shift-PageUp, Shift-PageDown e la rotellina del mouse per scorrere, proprio come si può fare in xterm.

Configurare Screen per questo non è stato facile e implica la cooperazione con l'emulatore di terminale. Ma alla fine sono riuscito a ottenere una soluzione che funziona abbastanza bene. Aggiungi questo al tuo file ~ / .Xresources (devi effettuare il logout affinché questo abbia effetto):

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

Quindi aggiungi questo al tuo file ~ / .screenrc:

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

Questo funziona in xterm. Non sono sicuro che funzioni in altri emulatori di terminale.

Nota che questo disabilita il normale supporto allo scorrimento in xterm, sarai in grado di scorrere solo quando usi Schermo. Potresti voler avviare xterm in questo modo per usare sempre Screen:

xterm -e screen


11

E per usare la rotellina di scorrimento in un VIM all'interno della schermata GNU:

[.Vimrc]

set mouse=a             " hold shift to copy xterm
set ttymouse=xterm2     " necessary for gnu screen & mouse

Fantastico, questo in combinazione con il trucco dello schermo ha reso la mia giornata da quando uso awesomewm e i terminali sono la mia vita
Fotios

7

Premere Ctrl+ aseguito da[

La barra del titolo del tuo terminale dovrebbe ora indicare la modalità Copia.

Ora i tasti freccia e la rotellina del mouse dovrebbero funzionare come previsto.

Per tornare alla normalità premere Esc o premere Invio un paio di volte.


5

Anche l'impostazione della TERMvariabile su vt100anziché xtermprima di eseguire lo schermo funziona.
Lo uso da molto tempo, funziona come un incantesimo.

Aggiungi questo al tuo .bashrc:

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

-

Per riferimento, il mio .screenrcha questo (non necessario per questo AFAIK):

# 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

L'impostazione della variabile d'ambiente TERM come descritto (prima di eseguire la schermata) ha funzionato per me. È semplice come digitare "export TERM = vt100". Molte grazie. PS: Sono su un Mac, ssh in una scatola Linux e lì eseguo schermo.
Daniel K.,

Come accennato in precedenza, questo non funziona come previsto. Sì, è possibile scorrere, tuttavia il buffer di scorrimento viene sovrascritto quando si cambia Windows.
Halsafar,

soluzione molto sottovalutata
MolbOrg

4

Quanto segue ha funzionato per me sia in Cygwin che in Putty: modifica .screenrc e aggiungi

terminfo xterm* ti=:te=

3

Se le risposte sopra non funzionano per te, assicurati di non avere una didascalia o l' opzione alwayslastline impostata nel tuo .screenrc. Se li hai, questo non funzionerà:

termcapinfo xterm* ti@:te@

Se hai bisogno di queste informazioni, puoi provare a impostarle nel titolo del tuo terminale (con termcapinfo)


0

La soluzione quando si utilizza "Ubuntu 16.04.2 LTS" è la seguente:

un). Aggiorna $ HOME / .screenrc come specificato nelle risposte precedenti:

termcapinfo xterm* ti@:te@

b). Utilizzare "Impostazioni". "Applicazioni preferite" per modificare il terminale predefinito in xterm, selezionando quello "Terminale X" nell'elenco a discesa.

Alcune note superflue

  • Nessuno degli altri terminali, inclusa l'installazione di "lxterminal", ha funzionato per me, anche quando ho modificato la linea termcapinfo in "*" anziché "xterm *".

  • Facendo clic sul pulsante del menu nell'angolo in alto a sinistra dello schermo, è possibile ottenere la finestra di dialogo Impostazioni utilizzando la terza icona nell'angolo in basso a destra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.