Прокрутка вывода оболочки мышью в tmux
скролл мыши не работает в tmux как это работает, когда я запускаю shell без tmux (в терминале Gnome). Кажется, tmux отправляет события прокрутки мыши, как если бы я нажал клавиши Up/Down. Но я хочу, чтобы он прокручивался через оболочку выход история. Есть ли способ заставить tmux работать так?
Примечание: Я знаю, как прокручивать с помощью клавиатуры (спасибо еще вопрос здесь).
Я попытался мыши прокрутки в два версии tmux:
- 0.8-5hardy1 (on Ubuntu 8.04 (Hardy Heron))
- 1.3-1 (on Ubuntu 10.10 (Maverick Meerkat))
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
+ [
больше. Прокрутка вниз до подсказки также автоматически завершает режим копирования.
есть некоторые изменения для 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'"
текущая версия 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
попробуйте это в ваш .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:[email protected]:[email protected]: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
кто-то (из источника, который я потерял) предложил добавить следующее в ~.tmux.conf
:
set -g terminal-overrides 'xterm*:[email protected]:[email protected]'
Я понятия не имею, как он работает или что он делает, но теперь это позволяет мне прокручивать колесико мыши внутри сеанса tmux без необходимости входа в режим копирования tmux; я просто прокручиваю колесо и бац! это работает. Обратите внимание, что я использую терминал.приложение, но я помню, что ОП дал ответ специально для использования с gnome-terminal
.
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"
С этой новой возможностью привязки колесика можно создать скрипт колеса мыши, чтобы сделать любое контекстно-зависимое поведение, которое вам нравится.
Gnome-terminal делает некоторые аккуратные трюки, переводя события прокрутки мыши на клавиши со стрелками вверх и вниз в условиях ограниченной "обычной" прокрутки. Например, при просмотре текста с помощью less
(это происходит, в частности, когда вы читаете человека), вы можете прокручивать контент с помощью j
,k
и клавиши со стрелками. Но и С gnome-terminal
, вы можете сделать это с помощью прокрутки мыши, благодаря указанным трюк.
так что я думаю tmux
какая "захват" терминала так же, как less
- и тот же механизм в gnome-terminal
ногами в: прокрутка мыши переводится в вверх / вниз клавиши со стрелками.
вы можете отключить эту функцию в настройках профиля и получить регулярную прокрутку при любых обстоятельствах. Просто снимите последний флажок во вкладке "прокрутка":.
https://github.com/NHDaly/tmux-better-mouse-mode
настраиваемая и многофункциональная реализация управления мышью для новых tmuxes. настоятельно рекомендуемый.
вы, вероятно, хотите использовать
set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"
с ним также.
вы можете объединить идеи привязки из других ответов, чтобы получить довольно удовлетворительное поведение прокрутки: работает в 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 строк