Прокрутка вывода оболочки мышью в tmux

скролл мыши не работает в tmux как это работает, когда я запускаю shell без tmux (в терминале Gnome). Кажется, tmux отправляет события прокрутки мыши, как если бы я нажал клавиши Up/Down. Но я хочу, чтобы он прокручивался через оболочку выход история. Есть ли способ заставить tmux работать так?

Примечание: Я знаю, как прокручивать с помощью клавиатуры (спасибо еще вопрос здесь).

Я попытался мыши прокрутки в два версии tmux:

7
задан Community
05.12.2022 22:36 Количество просмотров материала 3209
Распечатать страницу

9 ответов

для прокрутки в истории вывода вы должны использовать ^b + [ Затем вы можете использовать M+V для page up и ^V для page down. Я не знаю, если вы можете использовать реальные PgUp и PgDown хотя. Мой терминал не отправляет эти ключи в tmux. Вместо этого он прокручивает себя, а не историю tmux.

для выхода из режима копирования нажмите ESC

чтобы использовать мышь в этом режиме (так называемый режим копирования) нажмите ^b + : и введите следование:

setw -g mouse on

Примечание: в tmux < 2.1 опция была названа mode-mouse, а не mouse

теперь при переходе в режим копирования вы можете использовать мышь для прокрутки. Вы можете ввести эту команду в ~/.tmux.conf, если вы хотите, чтобы он загружался каждый раз при запуске tmux.

обновление: начиная с tmux 1.5 эта опция позволяет с помощью колеса прокрутки автоматически переключаться в режим копирования и прокручивать буфер прокрутки tmux. это не необходимо сначала ударить Ctrl-B + [ больше. Прокрутка вниз до подсказки также автоматически завершает режим копирования.

214
отвечен Pavlo 2022-12-07 06:24

есть некоторые изменения для Tmux 2.1

  • режим мыши был переписан. Больше нет вариантов для:

    • мыши-изменить-панели
    • мышь-выберите-панели
    • mouse-select-window
    • режим-мышь

    вместо этого есть только один вариант: "мышь", которая включает поддержку мыши полностью.

что будет

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'"
114
отвечен DannyRe 2022-12-07 08:41

текущая версия tmux (1.5) позволяет вам просто установить опцию mode-mouse На, и позволяет прокручивать с колесом мыши.

         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.

в моем .tmux.conf:

set-window-option -g mode-mouse on
61
отвечен bukzor 2022-12-07 10:58

попробуйте это в ваш .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

принято от http://brainscraps.wikia.com/wiki/Extreme_Multitasking_with_tmux_and_PuTTY

51
отвечен John L. Jegutanis 2022-12-07 13:15

кто-то (из источника, который я потерял) предложил добавить следующее в ~.tmux.conf:

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

Я понятия не имею, как он работает или что он делает, но теперь это позволяет мне прокручивать колесико мыши внутри сеанса tmux без необходимости входа в режим копирования tmux; я просто прокручиваю колесо и бац! это работает. Обратите внимание, что я использую терминал.приложение, но я помню, что ОП дал ответ специально для использования с gnome-terminal.

14
отвечен Jed Daniels 2022-12-07 15:32

tmux 2.1 вводит новые мыши привязывается.

Я написал эти привязки только сегодня. Это легко связывает колесо мыши со стрелками, когда не в Vim, потому что Vim способен интерпретировать необработанные коды колесика мыши (для таких целей, как выбор, какое окно Vim прокручивать для вас в зависимости от того, какой ваша мышь закончена).

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

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"

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

5
отвечен Steven Lu 2022-12-07 17:49

Gnome-terminal делает некоторые аккуратные трюки, переводя события прокрутки мыши на клавиши со стрелками вверх и вниз в условиях ограниченной "обычной" прокрутки. Например, при просмотре текста с помощью less (это происходит, в частности, когда вы читаете человека), вы можете прокручивать контент с помощью j,k и клавиши со стрелками. Но и С gnome-terminal, вы можете сделать это с помощью прокрутки мыши, благодаря указанным трюк.

так что я думаю tmux какая "захват" терминала так же, как less - и тот же механизм в gnome-terminal ногами в: прокрутка мыши переводится в вверх / вниз клавиши со стрелками.

вы можете отключить эту функцию в настройках профиля и получить регулярную прокрутку при любых обстоятельствах. Просто снимите последний флажок во вкладке "прокрутка":the checkbox.

3
отвечен ulidtko 2022-12-07 20:06

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

настраиваемая и многофункциональная реализация управления мышью для новых tmuxes. настоятельно рекомендуемый.

вы, вероятно, хотите использовать

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

с ним также.

0
отвечен Steven Lu 2022-12-07 22:23

вы можете объединить идеи привязки из других ответов, чтобы получить довольно удовлетворительное поведение прокрутки: работает в Vim изменения в режим копирования автоматически в терминале и выходит из него, когда вы достигнете дна по-прежнему позволяет использовать колесико мыши в man, less и journalctl.

мой код:

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

вы можете добавить другие команды, которые требуют клавиши со стрелками для прокрутки в части grep-e "человек"

Я добавил send-keys несколько раз, поэтому один тик на колесико мыши будет прокручивать 4 строк

0
отвечен stealz 2022-12-08 00:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх