web-dev-qa-db-fra.com

Utiliser la molette dans GNU screen

Comment puis-je configurer GNU l'écran pour permettre à la molette de la souris de défiler dans la mémoire tampon du défilement?) .

242
JesperE

Je crois que vous pouvez simplement ajouter une ligne comme celle-ci à votre ~/.screenrc:

termcapinfo xterm* ti@:te@

Où "xterm *" est une correspondance globale de votre terme actuel. Pour confirmer cela fonctionne, ^ A ^ D pour vous détacher de votre écran, puis screen -d -r Pour le rattacher, puis ls plusieurs fois et essayez de revenir en arrière. Ça marche pour moi.


Quelle est cette magie? Eh bien, consultons les pages de manuel.

screen(1) dit:

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.

De termcap(5):

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

Dans l'écran, vous devez d'abord entrer en "mode de défilement" (ou "mode de copie") pour pouvoir faire défiler dans la mémoire tampon de défilement: combo touche Ctrl-aEsc, ou Ctrl-aCtrl-[. Ensuite, vous pouvez faire défiler l’historique à l’aide des touches Haut et Bas (ou Ctrl-bCtrl-f pour déplacer une page).

Dans ce mode, votre molette devrait également fonctionner si elle fonctionne dans d'autres applications. Vous terminez le "mode de défilement" avec Esc.

En ce qui concerne le défilement de la mémoire tampon de défilement sans d'abord entrer dans le mode de défilement, ce n'est probablement pas possible sans modification d'écran. Je n'ai jamais entendu parler d'un moyen d'accéder au tampon de défilement, en dehors du mode défilement.

67
sleske

L’excellent article auquel fait référence Jon Z n’est plus disponible, mais j’ai été en mesure de récupérer la version texte de celui-ci à partir du cache de Google. Je le garde ici au cas où Google le laisserait également à l'avenir. Le message original a été écrit par Mikael Ståldal afin que le crédit soit crédité.

-

Comment utiliser la molette de la souris dans GNU Screen

GNU Screen prend en charge le défilement, mais vous devez l’utiliser par défaut avec des touches peu pratiques. Je voudrais pouvoir utiliser Shift-PageUp, Shift-PageDown et la molette de la souris pour faire défiler, comme vous pouvez le faire avec xterm.

Ce n’était pas facile de configurer Screen pour cela, et cela implique une coopération avec l’émulateur de terminal. Mais j'ai finalement réussi à trouver une solution qui fonctionne assez bien. Ajoutez ceci à votre fichier ~/.Xresources (vous devez vous déconnecter pour que cela prenne effet):

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

Ajoutez ensuite ceci à votre fichier ~/.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

Cela fonctionne dans xterm. Je ne sais pas si cela fonctionne dans les autres émulateurs de terminaux.

Notez que ceci désactive le support du défilement normal dans xterm, vous ne pourrez faire défiler que si vous utilisez Screen. Vous voudrez peut-être lancer xterm comme ceci pour toujours utiliser Screen:

xterm -e screen
24
Tommi R.

Pour OS X (Snow Leopard), les éléments suivants ont fonctionné pour moi:

http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/

En résumé, il faut ajouter les éléments suivants à ~/.screenrc sur l’hôte distant (celui sur lequel vous exécutez l’écran):

defscrollback 5000
termcapinfo xterm* ti@:te@
13
Jesse Crossen

Et pour utiliser la molette dans un VIM à l'intérieur GNU Écran:

[.vimrc]

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

Presse Ctrl+a suivi par [

La barre de titre de votre terminal devrait maintenant indiquer le mode Copie.

Maintenant, les touches fléchées et la molette de la souris doivent fonctionner comme prévu.

Pour revenir à la normale, appuyez sur Echap ou appuyez sur Entrée plusieurs fois.

6
Peter Crotty

Ce qui suit a fonctionné pour moi dans Cygwin et PuTTY: Éditez .screenrc et ajoutez

terminfo xterm* ti=:te=
4
Torbjör Weiland

Paramétrer TERM variable sur vt100 au lieu de xterm avant de lancer screen fonctionne également.
Je l'utilise depuis longtemps, fonctionne à merveille.

Ajoutez ceci à votre .bashrc:

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

-

Pour référence, mon .screenrc a ceci (non nécessaire pour autant que je sache):

# 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
4
lemonsqueeze

Si les réponses ci-dessus ne vous conviennent pas, assurez-vous de ne pas définir l'option légende ou alwayslastline dans votre .screenrc. Si vous les avez, cela ne fonctionnera pas:

termcapinfo xterm* ti@:te@

Si vous avez besoin de ces informations, vous pouvez essayer de les définir dans le titre de votre terminal (avec termcapinfo)

3
nachocab

La solution pour utiliser "Ubuntu 16.04.2 LTS" est la suivante:

une). Mettez à jour $ HOME/.screenrc comme indiqué dans les réponses précédentes:

termcapinfo xterm* ti@:te@

b) Utilisez "Paramètres". "Applications préférées" pour modifier le terminal par défaut en xterm, en sélectionnant le "Terminal X" dans la liste déroulante.

Quelques notes superflues

  • Aucun des autres terminaux, y compris l'installation de "lxterminal", n'a fonctionné pour moi, même lorsque j'ai modifié la ligne termcapinfo en "*" au lieu de "xterm *".

  • En cliquant sur le bouton de menu dans le coin supérieur gauche de l'écran, vous pouvez obtenir la boîte de dialogue Paramètres à l'aide de la 3ème icône située dans le coin inférieur droit.

0
Malcolm Boekhoff