Question Comment faire défiler dans tmux?


Je viens de commencer à utiliser tmux, et je l'aime vraiment, mais je dois pouvoir faire défiler les tampons / volets / fenêtres que j'ai ouverts. Je ne m'inquiète pas si cela fonctionne avec la souris ou non. Lorsque je recherche la page de manuel tmux, je ne trouve que deux occurrences du mot "scroll", et toutes deux concernent le mode de copie. Existe-t-il un moyen de faire défiler sans toute la surcharge de l’entrée dans le mode copie?


1060
2017-11-10 18:40


origine


Quel est votre problème? copy-mode est le moyen de visualiser l'historique (et éventuellement d'en copier des éléments). - Chris Johnsen
pour moi, vous pouvez appuyer sur f7 pour le mode de défilement et q pour quitter - JohnMerlino
set -g mode-mouse on La réponse de @ chaiyachaiya a été le gagnant pour moi - Peter Berg


Réponses:


Ctrl-b puis [ vous pouvez alors utiliser vos touches de navigation normales pour faire défiler (par ex. Flèche vers le haut ou PgDn). presse q pour quitter le mode de défilement.

Sinon, vous pouvez appuyer sur Ctrl-b  PgUp pour accéder directement au mode copie et faire défiler une page vers le haut (ce qui ressemble à ce que vous voudrez la plupart du temps)

Dans vi mode (voir ci-dessous), vous pouvez également faire défiler la page ligne par ligne en utilisant Décalage-k et Décalage-j (si vous êtes déjà en mode de défilement). Sans décalage, 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 attaché en utilisant une combinaison de touches d'une clé de préfixe, «C-b» (Ctrl-b) par défaut, suivie d'une touche 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 de plus. Notez que vous devez appuyer sur C-b deux fois si vous utilisez cela pour la page depuis C-b est lié en tant que clé de commande. Reportez-vous à la page de manuel pour plus d'informations sur la préface d'une commande de mode de 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.


1293
2017-11-11 03:02



je pense C-b = est choose-buffer par défaut. Vouliez-vous dire C-b [ (lequel est copy-mode par défaut)? Aussi, vous pouvez également utiliser C-b PageUp pour lancer 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 en cours). - Chris Johnsen
Correct, mon tmux n'a pas de mode de défilement. Tu dois C-b [ pour entrer en mode copie, puis utilisez les raccourcis clavier emacs ou vi pour faire défiler la page. 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 des clés avec le démarquage comme vous l'avez fait, Dennis?) - chadoh
@chadoh: Essayez-les sur votre Macbook: Accueil: fn-LeftArrow; Fin: fn-RightArrow; Page précédente: fn-UpArrow; Page suivante: fn-DownArrow. Pour faire des keycaps: <kbd>Ctrl</kbd> - Dennis Williamson
sur macbook, la fn + up va directement à l'application terminal et ne frappe jamais tmux - Tyler
Sur un macbook, si vous êtes en mode de défilement, vous pouvez utiliser fn + Shift + LeftArrow pour faire défiler une page. - Nick Hammond


Eh bien, vous devriez envisager 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 pratique a plus d'informations sur les fichiers tmux.conf.


237
2017-11-25 13:05



Lorsque je fais cela, les clics de souris et les défilements entraînent l'impression de caractères charabia dans la zone d'invite du terminal que j'utilise avec tmux. Des idées? - ely
Futurs utilisateurs de souris tmux: pour vous éviter de devoir faire défiler le fond avant de taper, vous pouvez frapper q pour quitter le mode de défilement. - Jezen Thomas
Le défilement de la souris fonctionne bien avec cela, mais malheureusement je ne peux plus utiliser la souris pour sélectionner du texte. En utilisant Tilda et tmux. - friederbluemle
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 en mode copie comme auparavant. - thrnio
Remarque importante: Ce paramètre rompt la mise en évidence et la copie du texte. Utilisez Maj + clic pour conserver cette fonctionnalité. - Shadoninja


De mon fichier .tmux.conf:

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

Cela permet le défilement natif de xterm.


125
2017-08-22 20:49



Pouvez-vous expliquer ce que cela fait exactement? - Ivo
Je ne sais pas ce que ça fait, mais c'est du pur génie. Enfin, tmux scrolling fonctionne, yay! - oneself
Cela ne fonctionne pas pour moi sur OS X ... - Nick
Solution: gist.github.com/1297707 - Nick
Jetez un coup d'oeil si vous êtes confus au sujet de la réponse de togdon: superuser.com/questions/310251/...   IMO, si vous n'avez qu'un seul volet, cette solution fonctionne mieux que la réponse acceptée. - thameera


Pour le tmux 2.1 le plus récent, défiler avec la souris en toute sécurité, c'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

pris à partir de https://github.com/tmux/tmux/issues/145


39
2017-12-01 16:09



Comment est-ce que ce n'est pas la réponse acceptée? - Marcel
la note dans cette réponse à propos de "ne pas être suffisant pour simplement recharger .tmux.conf aidé" et quitter toutes les sessions tmux pour moi (peut-être que kill-server fonctionnerait) a aidé! - Colin D
pourriez-vous préciser comment cela fonctionne? - oligofren
Il semble que les événements de la souris soient transmis lorsque la souris est cliquée / défilée / etc. si le volet est dans un état indirect / 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 en mode indirect. Si ce n'est pas pour 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 pu faire défiler correctement mon téléavertisseur et Vim en même temps, et j'ai essayé un tas de ces extraits. - John P


Dans mon cas, juste opter + Flèche vers le haut et opter + Flèche vers le bas sur OSX.


12
2018-04-17 03:43



@ fixer1234 La question ne mentionne pas du tout Linux. tmux peut également être utilisé sur OS X. - slhck
@slhck: merci Trop mal aux yeux; L'astigmatisme a commencé. J'ai mal interprété la balise tmux en tant que tag linux. - fixer1234


C'est comme ça que j'ai réussi et les raisons pour lesquelles je pense que c'est mieux que 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 clé proche, mais elle se trouve au milieu des deux index (à «F» et à «J», respectivement). Parce que ce raccourci est essentiel dans tmux, C-j est bien meilleur car il ne nécessite aucun mouvement de la main (hormis la frappe de la touche).

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

Etape 2. "S" (pour entrer en mode copie) est: 1) proche (même raison que ci-dessus), 2) implique l'autre (comparez: le 1-2 dans la boxe, ou le ls commande pour afficher les fichiers dans un répertoire), et 3) peut être considéré comme un mnémonique pour "scroll" (bien que le mode de copie ne concerne pas que le défilement).

bind s copy-mode

Étape 3. La dernière partie, le défilement réel. "P" et "N" sont familiers à cet effet aux utilisateurs d'Emacs. Ils sont proches, intuitifs ("P" est au dessus de "N" sur le clavier) et mnémonique ("précédent" et "suivant"). Si vous avez juste fait du défilement dans Emacs, puis que vous êtes passé à tmux, il est logique d'avoir 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); comme pour les mnémoniques - comme le défilement est une chose si courante, les mnémoniques ne comptent pas vraiment 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

10
2018-06-21 15:33





J'ai beaucoup cherché pour cela et la meilleure solution pour moi fonctionne comme mentionné 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 des volets dans une fenêtre en zoom dans chaque volet d'abord en utilisant Préfixe  +.

Un détail important qui manquait avec le mode souris est d'appuyer sur Décalage 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)


6
2018-03-31 00:42



Appréciez votre réponse. Mais plusieurs fois, les liens mentionnés peuvent se casser. Il serait toujours utile d’ajouter la partie centrale de votre réponse ici et de fournir le lien juste pour référence. - Prasanna


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

Il est compatible avec Tmux 2.1+ et le nouveau set-option -g mouse on approche.


4
2017-12-07 16:34



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 (donc je n'en ai plus besoin), et il y a deux fonctionnalités que je voulais vraiment: scroll-without-changing-pane en combinaison avec scroll-without-changing-pane et emulate-scroll-for-no-mouse-alternate-buffer. Maintenant, mon utilisation de tmux est bien meilleure. - selurvedu


La seule chose qui fonctionne pour moi est de mettre le suivant 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)

Mettre à jour:

J'ai trouvé que si vous modifiez le paramètre dans Putty Connection> Data> Type de terminal en "putty" (utilisé pour résoudre certains problèmes de formatage) de "xterm", alors 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"


4
2017-10-28 10:59



Celui-ci résout effectivement mon problème de défilement dans l'application iPhone également. - NathaneilCapital
La dernière fois que j'ai essayé cela ne fonctionnait plus, mais cela a fonctionné. Étrange. set -ga terminal-overrides ',xterm*:smcup@:rmcup@' - phocks