Настройка скорости прокрутки tmux

Можно ли настроить скорость прокрутки tmux (с помощью колеса мыши или сенсорной панели)?

Tmux 2.1 тип сломанной прокрутки (в зависимости от вашей конфигурации), заставляя меня обновлять мою конфигурацию. Я сделал это несколько недель назад.

Но теперь я думаю, что tmux scrolls * медленнее, чем раньше. Я думаю, что прочитал, вы можете настроить скорость прокрутки, но я не могу сейчас никому не упоминать об этом.

* Прокрутка с помощью колеса мыши. (Я фактически использую трекпад Macbook, но я думаю, что это эквивалентно колесу мыши.)

Я знаю, что вы можете сделать 10C-u (с привязками клавиш vi), чтобы вскочить на 10 страниц, но я также хотел бы иметь возможность просто быстро прокручивать мышью.

Я думаю, что это все соответствующая конфигурация, которую я лично имею в настоящее время:

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

Ответ 1

Использование плагина tmux-scroll-copy-mode может помочь здесь.

Как только вы его установили, просто добавьте set -g @scroll-speed-num-lines-per-scroll 5 в ваш .tmux.conf.

scroll-speed-num-lines-per-scroll - Устанавливает количество строк для прокрутки на событие прокрутки мыши. Параметр по умолчанию - 3, это скорость прокрутки в tmux 2.0. Большие номера прокручиваются быстрее. Чтобы замедлить прокрутку медленнее, чем одна строка за клик, установите значение в десятичное число от 0.0 до 1.0. С десятичным значением вступает в силу только эта доля событий в колесе. Значение должно быть >= 0. Примеры:

"3" (по умолчанию). Прокрутите три строки на каждый щелчок мышью. "1" - прокрутка одной линии на каждую колесико мыши (наиболее гладкая). "0,5" - прокрутите одну строку только на каждом прокрутке прокрутки мыши. "0.25" - прокрутите одну строку только на каждую четвертую прокрутку колеса мыши.

Ответ 2

Согласен, скорость прокрутки только с одной строкой на линии слишком медленная. Вы можете перетащить половину страницы:

bind -t emacs-copy WheelUpPane   halfpage-up
bind -t emacs-copy WheelDownPane halfpage-down

Тем не менее, исправление половины страницы, предложенное здесь, слишком быстро и уничтожает впечатление прокрутки, заменяя его только ощущением прыжка. Чтобы сделать прокрутку с произвольной скоростью, вы можете добавить несколько команд команд отправки, например:

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

Ответ 3

Для tmux 2.4 и выше у меня работает следующее:

bind -Tcopy-mode WheelUpPane send -N1 -X scroll-up
bind -Tcopy-mode WheelDownPane send -N1 -X scroll-down

Это устанавливает прокрутку по 1 строке за раз.

Из журнала изменений - ищите Changes from 2.3 to 2.4

Ответ 4

Я не смог получить ни одного ответа здесь, работающего с tmux 2.6 (последний тестировался на 2.9), в конце концов понял это, поэтому выложил другой ответ.

Это работает как отдельный файл конфигурации.

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

Ответ 5

Ну вот довольно плохое решение (используя режим навигации vim, обратите внимание на k и 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'"

Не уверен, что все компромиссы, но для начала это плохо, потому что 1, курсор перемещается по всему месту и 2, есть отставание при переключении направлений, от прокрутки до прокрутки вниз или наоборот, пока курсор перемещается к другому краю панели.

У него есть преимущество, хотя и с настраиваемой скоростью. Просто измените 5, чтобы отрегулировать скорость.

Полное раскрытие: я думаю, что это, должно быть, сильно вдохновляло то, что я читал где-то в другом месте, потому что оно не очень хорошо знакомо сейчас. Хотелось бы, чтобы я зачислил свои источники.

Ответ 6

Существует мода для tmux, позволяющая указывать любое количество команд для привязок клавиш "mode": http://ershov.github.io/tmux/

Вы можете прокручивать или прокручивать несколько раз или делать это в цикле или даже создавать процедуру для выполнения.

Например:

bind -t emacs-copy WheelUpPane tcl { scroll-up ; scroll-up }