2010-11-12 14:02:16 +0000 2010-11-12 14:02:16 +0000
271
271

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

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

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

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

Ответы (10)

264
264
264
2010-12-01 18:48:45 +0000

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

Чтобы выйти из режима копирования, нажмите ESC

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

setw -g mouse on

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

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

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

127
127
127
2015-10-19 11:02:01 +0000

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

  • режим Mouse-mode переписан. Больше нет вариантов:

Это будет

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'"
64
64
64
2011-11-15 20:05:50 +0000

Текущая версия 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
59
59
59
2012-10-24 16:55:07 +0000

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

Taken из _COPY10_Multitasking\with\tmux\and_PuTTY

16
16
16
2011-06-22 17:10:05 +0000

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

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

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

5
5
5
2015-12-15 23:44:29 +0000

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

Это означает, что мы, наконец, можем использовать мышь только для просмотра нескольких страниц man и всего остального, что принимает клавиши со стрелками. Вы можете расширить и связать логику 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
5
5
2019-04-23 15:29:55 +0000

Если вы уже находитесь в сессии tmux, вы можете запустить команду

set mouse on

Напоминание: чтобы запустить команды, используйте ваш префикс, а затем :.

3
3
3
2010-12-07 07:03:31 +0000

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

Так что, наверное, tmux делает некоторый “захват” терминала так же, как и less - и тот же механизм в gnome-terminal запускается: прокрутка мыши преобразуется в нажатие клавиш со стрелками вверх/вниз.

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

.

1
1
1
2018-01-02 23:48:52 +0000

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

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

Скорее всего, вы также захотите использовать

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

с ней.

0
0
0
2018-02-12 23:02:10 +0000

Вы можете объединить идеи связывания из других ответов, чтобы получить довольно удовлетворительное поведение прокрутки: работает в vim изменения, чтобы копировать режим автоматически в терминале и выходит из него, когда вы дойдете до дна по-прежнему позволяет использовать колесо мыши в человеке, меньше и 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 ‘man’ часть

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

Похожие вопросы

6
10
12
11
8