2010-11-12 14:02:16 +0000 2010-11-12 14:02:16 +0000
271
271

Sortie du shell de défilement avec la souris dans tmux

Le défilement de la souris ne fonctionne pas dans tmux de la même manière que lorsque j'exécute le shell sans tmux (dans le terminal Gnome). Il semble que tmux envoie des événements de défilement de la souris comme si j'avais appuyé sur les touches Haut/Bas. Mais je veux qu'il fasse défiler l'historique des sorties du shell. Y a-t-il un moyen de faire fonctionner tmux comme ça ?

Note: Je sais comment faire défiler avec le clavier (grâce à une autre question ici).

J'ai essayé le défilement de la souris dans deux versions de tmux :

Réponses (10)

264
264
264
2010-12-01 18:48:45 +0000

Pour faire défiler l'historique de la sortie, vous pouvez utiliser ^b + [ Vous pouvez ensuite utiliser M+V pour monter dans la page et ^V pour descendre. Je ne sais pas si vous pouvez utiliser les vrais PgUp et PgDown cependant. Mon terminal n'envoie pas ces clés au tmux. Au lieu de cela, il se déroule lui-même et non l'historique du tmux.

Pour quitter le mode copie, appuyez sur ESC

Pour utiliser votre souris dans ce mode (appelé mode copie), appuyez sur ^b + :et entrez la suite :

setw -g mouse on

Note : Dans tmux < 2.1, l'option était nommée mode-mouse, et non mouse

Maintenant, lorsque vous passez en mode de copie, vous pouvez utiliser votre souris pour la faire défiler. Vous pouvez mettre cette commande dans votre ~/.tmux.conf si vous le souhaitez afin qu'elle se charge à chaque fois que vous exécutez tmux.

Update: A partir de tmux 1.5, cette option fait passer automatiquement la molette de défilement en mode copie et fait défiler le tampon de retour de tmux vers l'arrière. Il n'est plus nécessaire de taper d'abord Ctrl-B + [. Le défilement vers le bas jusqu'à l'invite met également fin automatiquement au mode de copie.

127
127
127
2015-10-19 11:02:01 +0000

Il y a quelques changements pour Tmux 2.1

  • Le mode souris a été réécrit. Il n'y a maintenant plus d'options pour :

Ce serait

set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
64
64
64
2011-11-15 20:05:50 +0000

La version actuelle de tmux (1.5) vous permet d'activer simplement l'option mode-souris, et vous permet de faire défiler la souris avec la molette.

mode-mouse [on | off]
                 Mouse state in modes. If on, the mouse may be used to
                 enter copy mode and copy a selection by dragging, to
                 enter copy mode and scroll with the mouse wheel, or to
                 select an option in choice mode.

Dans mon .tmux.conf :

set-window-option -g mode-mouse on
59
59
59
2012-10-24 16:55:07 +0000

Essayez ceci dans votre .tmux.conf

# Make mouse useful in copy mode
setw -g mode-mouse on

# Allow mouse to select which pane to use
set -g mouse-select-pane on

# Allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of C-Up, C-Down, C-Left, C-Right
set -g terminal-overrides "xterm*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

# Scroll History
set -g history-limit 30000

# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on

# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50

Tiré de http://brainscraps.wikia.com/wiki/Extreme_Multitasking_with_tmux_and_PuTTY

16
16
16
2011-06-22 17:10:05 +0000

Quelqu'un (d'une source que j'ai perdue) a suggéré d'ajouter ce qui suit à ~.tmux.conf :

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

Je n'ai aucune idée de comment ça marche ou de ce que ça fait, mais ça me permet maintenant de faire défiler la roue de la souris à l'intérieur d'une session tmux sans avoir à entrer dans le mode de copie de tmux ; je fais juste défiler la roue et BAM ! ça marche. Notez que j'utilise terminal.app, mais je me souviens que l'OP a donné la réponse spécifiquement pour une utilisation avec gnome-terminal.

5
5
5
2015-12-15 23:44:29 +0000

tmux 2.1 introduit de nouveaux liens pour les souris.

Je viens d'écrire ces liens aujourd'hui. Il lie de façon transparente la molette de la souris aux flèches lorsqu'elle n'est pas dans Vim, car Vim est capable d'interpréter les codes bruts de la molette de la souris (à des fins telles que le choix de la fenêtre de Vim à faire défiler pour vous en fonction de celle sur laquelle votre souris se trouve).

Cela signifie que nous pouvons enfin utiliser la souris uniquement pour afficher plusieurs pages de manuel et tout ce qui accepte les touches fléchées. Vous pouvez étendre et enchaîner la logique if si nécessaire pour mettre en œuvre plus de logique pour vos applications.

bind -n WheelUpPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Up"
bind -n WheelDownPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Down"

Avec cette nouvelle capacité de liaison de la molette, il est possible de scripter la molette de la souris pour qu'elle se comporte comme vous le souhaitez en fonction du contexte.

5
5
5
2019-04-23 15:29:55 +0000

Si vous êtes déjà dans une session tmux, vous pouvez exécuter la commande

set mouse on

Rappel : pour exécuter les commandes, utilisez votre préfixe puis :.

3
3
3
2010-12-07 07:03:31 +0000

Gnome-terminal fait un tour de main en traduisant les événements de défilement de la souris en touches de déplacement vers le haut et vers le bas dans des conditions de défilement “habituel” restreint. Par exemple, lorsque vous visualisez un texte en utilisant less (cela se produit notamment lorsque vous lisez un homme), vous pouvez faire défiler le contenu en utilisant j, k, et les touches fléchées. Mais aussi, avec gnome-terminal, vous pouvez le faire avec le défilement de la souris, grâce à l'astuce mentionnée.

Donc je suppose que tmux fait une certaine “capture” du terminal tout comme less - et le même mécanisme dans gnome-terminal s'enclenche : le défilement de la souris se traduit par des pressions sur les touches fléchées Haut/Bas.

Vous pouvez désactiver cette fonction dans les paramètres du profil et obtenir le défilement normal en toutes circonstances. Il suffit de décocher la dernière case de l'onglet “Défilement” :

.

1
1
1
2018-01-02 23:48:52 +0000

https://github.com/NHDaly/tmux-better-mouse-mode

Mise en œuvre configurable et riche en fonctionnalités du contrôle de la souris pour les nouveaux tmuxes. fortement recommandé.

Vous souhaitez probablement utiliser

set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"

avec elle aussi.

0
0
0
2018-02-12 23:02:10 +0000

Vous pouvez combiner les idées contraignantes des autres réponses pour obtenir un comportement de défilement assez satisfaisant : fonctionne en vim passe automatiquement en mode copie dans le terminal et le quitte lorsque vous atteignez le bas vous permet encore d'utiliser votre molette de souris en man, less et journalctl.

Mon code :

bind -n WheelUpPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Up Up Up Up" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"
bind -n WheelDownPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Down Down Down Down" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"

vous pouvez ajouter d'autres commandes qui nécessitent des touches fléchées pour faire défiler la partie “man” du grep -e

j'ai ajouté les touches d'envoi plusieurs fois, donc une coche sur la molette de la souris fera défiler 4 lignes à la fois