Comment puis-je faire défiler dans tmux?


1297

Je viens juste de commencer à utiliser tmux, et je l’aime vraiment beaucoup, mais je dois pouvoir faire défiler les tampons / panneaux / fenêtres que j’ai ouverts. Je me fiche de savoir si cela fonctionne avec la souris ou non. Lorsque je recherche dans la page de manuel de tmux, je ne trouve que deux occurrences du mot "scroll" qui apparaissent, et les deux ont à voir avec le mode de copie. Existe-t-il un moyen de faire défiler sans tout le temps système nécessaire pour passer en mode copie?


8
Quels frais vous préoccupent? copy-modeest le moyen de voir l’historique (et éventuellement d’en copier des éléments).
Chris Johnsen

2
pour moi, vous pouvez appuyer sur f7 pour le mode de défilement et sur q pour quitter
JohnMerlino

7
set -g mode-mouse onLa réponse de per @ chaiyachaiya a été gagnante pour moi
Peter Berg

Réponses:


1576

Ctrl- bEnsuite, [vous pouvez utiliser vos touches de navigation normales pour faire défiler (ex. Up Arrowou PgDn). Appuyez sur qpour quitter le mode de défilement.

Vous pouvez également appuyer sur Ctrl- b PgUppour passer directement en mode Copie et faire défiler une page vers le haut (ce qui semble être ce que vous voudrez le plus souvent).

En vimode (voir ci-dessous), vous pouvez également faire défiler la page ligne par ligne vers le haut ou le bas à l’aide des touches Shift- ket Shift- j(si vous êtes déjà en mode défilement). Non déplacé, le curseur se déplace à la place de la page.

Extraits de la page de manuel :

tmux peut être contrôlé à partir d'un client connecté en utilisant une combinaison de clé de préfixe, 'C-b' (Ctrl-b) par défaut, suivie d'une clé de commande.

 The default command key bindings are:

[           Enter copy mode to copy text or view the history.

Function                     vi              emacs
--------                     --              -----
Half page down               C-d             M-Down
Half page up                 C-u             M-Up
Next page                    C-f             Page down
Previous page                C-b             Page up
Scroll down                  C-Down or C-e   C-Down
Scroll up                    C-Up or C-y     C-Up
Search again                 n               n
Search again in reverse      N               N
Search backward              ?               C-r
Search forward               /               C-s

Plus un tas plus. Notez que vous devez appuyer C-bdeux fois si vous l'utilisez pour la page précédente, car elle C-best liée à la touche de commande. Reportez-vous à la page de manuel pour obtenir des informations sur la manière de préfacer une commande en mode copie avec un nombre de répétitions.

Vous pouvez définir le mode de reliure à l'aide de Ctrl- b, puis

:set-window-option mode-keys emacs

ou vi.


14
Je pense que C-b =c'est choose-bufferpar défaut. Vouliez-vous dire C-b [(qui est copy-modepar défaut)? Vous pouvez également utiliser C-b PageUppour démarrer le mode copie directement sur la page précédente (très pratique lorsque vous savez ce que vous voulez voir / copier a déjà fait défiler la page actuelle).
Chris Johnsen

4
Correct, mon tmux n'a pas de mode de défilement. Vous devez passer en C-b [mode copie, puis utiliser les raccourcis clavier emacs ou vi pour faire défiler les éléments. Cela semble être beaucoup d'étapes juste pour faire défiler, mais les avantages de tmux l'emportent toujours sur ces inconvénients. Je suis sur un macbook et il n'y a pas de clé PageUp: - \. (Aussi, comment puis-je faire les clés avec démarquage comme vous l'avez fait, Dennis?)
chadoh

44
@chadoh: essayez-les sur votre Macbook: Accueil: fn-LeftArrow; End: fn-RightArrow; Page Up: fn-UpArrow; Page Down: fn-DownArrow. Pour faire des keycaps:<kbd>Ctrl</kbd>
Dennis Williamson

5
sur macbook, le fn + up va directement à l'application terminale et ne frappe jamais tmux
Tyler

15
Sur un macbook, si vous êtes en mode de défilement, vous pouvez utiliser fn + Maj + LeftArrow pour faire défiler une page vers le haut.
Nick Hammond

306

Eh bien, vous devriez considérer la bonne façon de définir le défilement: ajoutez votre tmux.conf

set -g mouse on        #For tmux version 2.1 and up

ou

set -g mode-mouse on   #For tmux versions < 2.1

Cela a fonctionné pour moi dans les fenêtres et les vitres. Maintenant, tmux est juste parfait.

Tmux a plus d’informations sur les fichiers tmux.conf.


5
Lorsque je le fais, des clics et des défilements de souris entraînent l'impression de caractères charabia dans la zone d'invite du terminal que j'utilise avec tmux. Des idées?
Ely

22
Futurs utilisateurs de souris tmux: pour éviter de devoir revenir au bas de la page avant de taper, vous pouvez appuyer sur qpour quitter le mode de défilement.
Jezen Thomas

15
Le défilement par la souris fonctionne bien avec cela, mais malheureusement, je ne peux plus utiliser la souris pour sélectionner du texte. Utiliser Tilda et tmux.
friederbluemle

27
Notez que dans tmux 2.1 et supérieur, ceci est remplacé par set -g mouse on, et le défilement n'entre pas automatiquement dans le mode copie comme il le faisait auparavant.
Thrnio

25
Remarque importante: Ce paramètre active la mise en surbrillance et la copie de texte. Utilisez les touches Maj + clic pour conserver cette fonctionnalité.
Shadoninja

141

De mon .tmux.conf:

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

Cela active le défilement xterm natif.


28
Pouvez-vous expliquer ce que cela fait exactement?
Ivo

11
Je ne sais pas ce que ça fait, mais c'est du pur génie. Enfin, tmux scrolling fonctionne, yay!
soi

5
Cela ne marche pas pour moi sur OS X ...
Nick


6
Jetez un œil à cette question si la réponse de togdon vous laisse perplexe: superuser.com/questions/310251/… IMO, si vous n’avez qu’un seul volet, cette solution fonctionne mieux que la réponse acceptée.
Thameera

57

Pour le dernier tmux 2.1, faire défiler correctement votre souris est la bonne réponse:

set -g mouse on
" sane scrolling:
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

il ne suffit pas de recharger votre fichier .tmux.conf pour redémarrer votre tmux, par exemple tmux kill-server && tmux

extrait de https://github.com/tmux/tmux/issues/145


1
Comment est-ce pas la réponse acceptée?
Marcel

2
la note dans cette réponse à propos de "ne pas suffire à recharger .tmux.conf aidé" et quitter toutes les sessions tmux pour moi (peut-être que kill-server fonctionnerait) m'a aidé!
Colin D

1
Pourriez-vous expliquer comment cela fonctionne?
oligofren

Il semble transférer les événements de la souris lorsque vous cliquez / faites défiler la souris / etc. si le volet est dans un état indirect / mis en mémoire tampon (juste en mode copie?) et que la souris appuie sur un bouton, fait défiler, etc. La dernière partie couvre le défilement en mode direct en passant d'abord au mode indirect. Sans ces contrôles, le terminal peut interpréter les événements comme un défilement de l'historique, voire pas du tout. Cela dit, je ne sais pas si j’ai déjà réussi à faire défiler correctement mon téléavertisseur et Vim en même temps, et j’ai essayé quelques extraits.
John P

2
@chefarov - selon un commentaire sur une autre réponse, vous pouvez le faire via Shift+clickle mode souris.
Brendan Moore

14

Dans mon cas, juste opt+ UpArrowet opt+ DownArrowsur OSX.


@ fix1234 La question ne mentionne pas du tout Linux. tmuxpeut être utilisé sur OS X aussi.
Slhck

@slhck: Merci. Aux yeux trop bleus; l'astigmatisme est entré en jeu. J'avais mal interprété la balise tmux comme une balise linux.
fix1234

11

C’est ainsi que j’ai fonctionné et les raisons pour lesquelles j’estime que c’est mieux que la méthode par défaut.

Pour l'essayer, mettez toutes les sections de code dans ~/.tmux.conf.

Étape 1. Changez la clé de préfixe pour ne pas avoir à atteindre un bit. "B" est apparemment une touche proche, mais il se trouve au milieu des deux index (respectivement à "F" et "J"). Parce que ce raccourci est essentiel dans tmux, Cj est bien meilleur car il ne nécessite aucun mouvement de la main (à part appuyer sur la touche).

set -g prefix C-j
unbind C-b
bind C-j send-prefix

Étape 2. 'S' (pour entrer en mode copie) est: 1) fermer (même raison que ci-dessus), 2) implique l'autre main (comparez: le 1-2 dans la boxe, ou la lscommande pour afficher les fichiers dans un répertoire ), et 3) pourrait être considéré comme une mnémonique pour "faire défiler" (bien que le mode de copie ne se limite pas au défilement).

bind s copy-mode

Étape 3. La dernière partie, le défilement réel. P et N sont familiers à cette fin pour les utilisateurs d’Emacs. Ils sont proches, intuitifs ("P" est supérieur à "N" sur le clavier) et mnémoniques ("précédent" et "suivant"). Si vous venez de faire défiler dans Emacs, puis passez à tmux, il est logique de disposer de ces raccourcis.

Cependant, j'ai trouvé que 'I' et 'K' sont encore meilleurs - ils sont encore plus proches que 'P' et 'N', et intuitifs (pour la même raison); En ce qui concerne les mnémoniques - le défilement étant chose courante, les mnémoniques n'auront aucune importance, car les raccourcis contourneront bientôt votre cerveau et entreront dans la mémoire musculaire.

bind -t emacs-copy 'p' scroll-up
bind -t emacs-copy 'n' scroll-down
bind -t emacs-copy 'i' scroll-up
bind -t emacs-copy 'k' scroll-down

7

J'ai cherché beaucoup autour de cela et la meilleure solution pour moi fonctionne comme indiqué dans ce guide détaillé: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Ajoutez ces liaisons dans ~ / .tmux.conf:

set -g mode-mouse on

unbind +
bind + \
  new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
  swap-pane -s tmux-zoom.0 \;\
  select-window -t tmux-zoom

unbind -
bind - \
  last-window \;\
  swap-pane -s tmux-zoom.0 \;\
  kill-window -t tmux-zoom

Avec l'approche ci-dessus mise en œuvre, vous pouvez également copier à partir de volets d'une fenêtre en effectuant un zoom avant sur chaque volet à l'aide de Prefix + .

Un détail important qui manquait avec le mode souris est d’appuyer sur Maj avant de sélectionner une zone à copier. Cela le copiera dans le tampon de terminal traditionnel au lieu du tampon de copie tmux. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )


7

Je vous recommande d'essayer le plugin tmux-better-mouse-mode pour résoudre la plupart des problèmes liés à votre souris tmux.

Il est compatible avec Tmux 2.1+ et la nouvelle set-option -g mouse onapproche.


1
Merci, c'est la meilleure solution pour moi. Il couvre toutes les liaisons de la molette de la souris que j'ai ajoutées manuellement (je n'en ai donc plus besoin), et il y a deux fonctionnalités que je voulais beaucoup: scroll-without-changing-paneen combinaison avec scroll-without-changing-paneet emulate-scroll-for-no-mouse-alternate-buffer. Maintenant, mon expérience d'utilisation de tmux est bien meilleure.
selurvedu

6

La seule chose qui fonctionne pour moi est de mettre ce qui suit dans ~/.tmux.conf

# 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"

(vous devrez peut-être redémarrer pour que cela prenne effet)

Mise à jour:

J'ai constaté que si vous modifiez le paramètre dans Putty Connection> Données> Type de terminal en "putty" (utilisé pour résoudre certains problèmes de formatage) à partir de "xterm", cette solution cesse de fonctionner.

Mise à jour 2:

Utilisez ceci si vous voulez "mastic" comme type de terminal: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


2
Celui-ci résout également mon problème de défilement dans l'application iPhone.
NathaneilCapital

La dernière fois que j'ai essayé, cela ne fonctionnait plus, mais cela fonctionnait. Étrange. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
Phocks

4

Cela a fonctionné pour moi:

vim ~/.tmux.conf
set -g mode-mouse on      ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf

2
Depuis la version 2.1 (18 octobre 2015), l'option devrait êtreset -g mouse on
naoko

+1 pour fournir le chemin complet au fichier de configuration. La réponse de @ chaiyachaiya serait parfaite sinon.
John McFarlane

1

FWIW, sur un macbook / OSX Mojave, après ctrl+[avoir:

  • up arrow pour aligner
  • down arrow pour ligne vers le bas
  • fn + up arrow pour la page en haut
  • fn + down arrow pour la page suivante
  • q pour quitter le mode d'affichage

0

La seule chose qui a fonctionné pour moi a été vim ~ / .tmux.conf, définissez -g mode-mouse sur ### Insérez ce paramètre avec vim, puis sourcez le fichier. fichier source tmux ~ / .tmux.conf


Pourriez-vous utiliser un formatage pour rendre cela plus clair? Utilisez le bouton EDITER puis examinez les options disponibles dans l'éditeur pour ajouter les formats utiles.
music2myear le

-2
  • Ctrl+ A- pour commencer le défilement
  • Ctrl+ C- pour arrêter le défilement

3
Cet article est trop court pour répondre utilement à la question. Cela ajoute très peu de nouvelles informations aux réponses déjà postées; il ne dit rien sur la manière de faire défiler (seulement comment changer de mode de copie). En outre, la combinaison de touches de préfixe de commande par défaut est Ctrl-B( Ctrl-Aest la valeur par défaut pour l'écran GNU).
Anthony Geoghegan

1
Pas sûr si l'auteur de cette réponse a même compris la question. C'est inutile et tout à fait faux.
Vik

2
Je cherche depuis longtemps à arrêter le défilement, merci de le signaler!
PERR0_HUNTER
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.