Peut-on configurer la vitesse de défilement de tmux (à l’aide d’une molette de la souris ou d’un pavé tactile)?
Tmux 2.1 sorte de défilement cassé (en fonction de votre configuration), me forçant à mettre à jour ma configuration. Je l'ai fait il y a quelques semaines.
Mais maintenant, je pense que tmux défile * plus lentement qu’avant. Je pense avoir lu que vous pouvez configurer la vitesse de défilement mais je ne trouve aucune mention de cela nulle part maintenant.
* Faire défiler avec une molette de la souris qui est. (J'utilise un trackpad Macbook mais je pense que cela équivaut à une molette de souris.)
Je sais que vous pouvez faire 10C-u (avec les raccourcis clavier vi) pour sauter de 10 pages, mais j'aimerais aussi pouvoir faire défiler rapidement avec la souris.
Je pense que c'est toute la configuration pertinente que j'ai personnellement à l'heure actuelle:
# Use the mouse to select panes, select windows (click window tabs), resize
# panes, and scroll in copy mode.
# Requires tmux version >= 2.1 (older versions have different option names for mouse)
set -g mouse on
# No need to enter copy-mode to start scrolling.
# From github.com/tmux/tmux/issues/145
# Requires tmux version >= 2.1 (older versions have different solutions)
bind -n WheelUpPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
Utiliser le tmux-scroll-copy-mode plugin devrait aider ici.
Une fois que vous l'avez installé, ajoutez simplement set -g @scroll-speed-num-lines-per-scroll 5
à votre fichier .tmux.conf.
scroll-speed-num-lines-per-scroll - Définit le nombre de lignes à faire défiler par événement de défilement de la molette de la souris. L'option par défaut est 3, ce qui correspond à la vitesse de défilement dans tmux 2.0. Les grands nombres défilent plus rapidement. Pour ralentir le défilement plus lent qu'une ligne par clic de roue, définissez la valeur sur un nombre décimal compris entre 0,0 et 1,0. Avec une valeur décimale, seule cette fraction d'événements de roue prendra effet. La valeur doit être> = 0. Exemples:
"3" (par défaut) - Faites défiler trois lignes pour chaque clic de souris. "1" - Une ligne par clic de défilement avec la molette de la souris (le plus lisse). "0,5" - Faites défiler une ligne uniquement un clic sur la molette de la souris sur deux. "0,25" - Permet de faire défiler une ligne uniquement sur un clic de défilement sur la quatrième molette de la souris.
Je suis d'accord, la vitesse de défilement avec une seule ligne à la ligne est beaucoup trop lente. Vous pouvez le faire sauter demi-pages:
bind -t emacs-copy WheelUpPane halfpage-up
bind -t emacs-copy WheelDownPane halfpage-down
Néanmoins, le correctif d’une demi-page proposé ici est beaucoup trop rapide et détruit l’impression de défilement en le remplaçant par la seule sensation de sauter. Pour que le défilement aille à une vitesse personnalisée, vous pouvez ajouter plusieurs commandes send-keys comme ceci:
# Scrolling in tmux
set -g mouse on
bind -n WheelUpPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M; send-keys -M; send-keys -M; send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M; send-keys -M; send-keys -M; send-keys -M' 'copy-mode -e; send-keys -M; send-keys -M; send-keys -M; send-keys -M'"
bind -n WheelDownPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M; send-keys -M; send-keys -M; send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M; send-keys -M; send-keys -M; send-keys -M' 'copy-mode -e; send-keys -M; send-keys -M; send-keys -M; send-keys -M'"
Pour tmux 2.4 et supérieur, ce qui suit fonctionne pour moi:
bind -Tcopy-mode WheelUpPane send -N1 -X scroll-up
bind -Tcopy-mode WheelDownPane send -N1 -X scroll-down
Cela le fait défiler 1 ligne à la fois.
Dans le changelog - recherchez Changes from 2.3 to 2.4
Je ne pouvais obtenir aucune des réponses ici à partir de tmux 2.6, j'ai fini par le comprendre, donc poster une autre réponse.
Cela fonctionne comme un fichier de configuration autonome.
set -g mouse on
set-option -g status-keys vi
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi WheelUpPane send-keys -X halfpage-up
bind-key -T copy-mode-vi WheelDownPane send-keys -X halfpage-down
Voici une solution plutôt mauvaise (en utilisant le mode de navigation vim, notez les variables k
et j
).
bind-key -n WheelUpPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if-Shell -Ft= '#{pane_in_mode}' 'send-keys 5 k' 'copy-mode -e'"
bind-key -n WheelDownPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if-Shell -Ft= '#{pane_in_mode}' 'send-keys 5 j'"
Je ne sais pas encore ce que sont tous les compromis, mais pour commencer, c'est mauvais parce que 1, le curseur se déplace partout et 2, il y a un décalage lorsque vous changez de direction, du défilement vers le bas ou vice-versa, tandis que le curseur se déplace vers l'autre bord du volet.
Il a cependant l'avantage d'une vitesse configurable. Il suffit de changer le 5
pour ajuster la vitesse.
Divulgation complète: Je pense que cela a dû être fortement inspiré par quelque chose que j'ai lu ailleurs, car ce n'est pas très familier maintenant. J'aurais aimé avoir crédité mes sources.