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


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

Заметка: Я знаю, как прокручивать клавиатуру (благодаря Другой вопрос Вот).

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


221
2017-11-12 14:02


Источник


Я думаю, что ответ bukzor решает вашу проблему для tmux 1.5 и новее. - kynan


Ответы:


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

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

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

setw -g mouse on

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

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

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


203
2017-12-01 18:48



Обратите внимание, что вам может потребоваться перезагрузить конфигурационный файл, если у вас уже есть запущенный сервер tmux. blog.sanctum.geek.nz/reloading-tmux-config  tmux source-file ~ / .tmux.conf - Allan Nienhuis
Не работает для меня на OS X. - Ain
@Ain - Сейчас 11 основных версий OS X. В какой версии мы говорим точно? - Ramhound
Для tmux> = 2.1 см. Ответ @ DannyRe (в настоящее время довольно далеко внизу). - Joel Ostblom
set -g mouse on работал на меня на macOS tmux 2.1 - Miguel Mota


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

  • Мышь-режим был переписан. В настоящее время больше нет вариантов:

    • мыши изменить размер-панель
    • мыши выбрать-панель
    • мыши выбрать окна
    • Режим мыши

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

Это было бы

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

111
2017-10-19 11:02



Спасибо, теперь выбираем панели и т. Д., Но прокрутки нет. Чтобы снова выполнить прокрутку, используйте следующее: github.com/NHDaly/tmux-scroll-copy-mode - Mahdi
awesome - это даже работает на cygwin - tmux на WINDOWS 7 - WD11
@Mahdi Это, похоже, не работает на osx. Любые намеки? - SolidSnake
@SolidSnake: Я не помню проблем с использованием этого плагина. Он работал плавно, я включил режим мыши, а затем установил его. Вы должны перезагрузить конфигурацию tmux, используя tmux source-file ~/.tmux.conf - Mahdi
bind как представляется, больше не требуется на tmux 2.3 - Theron Luhn


Текущая версия tmux (1.5) позволяет просто установить опцию «режим-мышь» и позволяет прокручивать колесико мыши.

         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
2017-11-15 20:05



Это то поведение, которое вы действительно хотите! Прокрутка мыши позволяет включить режим копирования, а не просто прокручивать альтернативный буфер оболочки. Наконец, это стало стимулом для перехода от экран в tmux для меня. Есть ли возможность получить такое же поведение и с Shift + PgUp? - kynan
@kynan: Я лично просто нажимаю C-A PgUp для этого. Вы можете напрямую связать ключ страницы с tmux bind-key -n PPage copy-mode -u, Подобный тик должен работать на shift + pageup, если вы не привязываете его к локальному терминалу. - bukzor
Это приводит к нечетному поведению, когда при прокрутке назад к командной строке я получаю дополнительный символ, вставленный в CLI, что обычно приводит к нарушению моей первой команды. Это очень раздражает. - Chris R
Обратите внимание, что, однако, это отлично подходит для запуска прокрутки с помощью мыши, это вызывает нечетное поведение при выборе текста для вставки с помощью среднего щелчка. Я закончил предлагать C-b pg-up / down (по умолчанию), так как компромисс был неприемлем. - h7r
@ChrisR Я получаю это совсем немного, и он не совсем последователен. Это [M [M # [M [M # [M [M # [M [M # [M тип строки? - Elijah Lynn


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


50
2017-10-24 16:55



+1 для escape-time установка - Dakusan


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

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

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


14
2018-06-22 17:10



Джед, спасибо! Ваш совет работает и в gnome-terminal. Я попытаюсь использовать эту установку в течение некоторого времени. Но это имеет недостаток: прокрутка мыши теперь не работает должным образом less, Если я загружу less внутри tmux, прокрутка мыши не прокручивает файл, открытый в less, Он прокручивает весь терминал. Как ни странно, vim ведет себя так, как ожидалось, внутри tmux с вашей настройкой. - user31494
Заметим, что с tmux 1.5 это заменяется setw -g mode-mouse on , который выполняет перемотку режима копирования с помощью колеса мыши. - kynan
Объяснение состоит в том, что этот параметр отключает блокировку прокрутки на альтернативном экране терминала, что желательно в большинстве случаев, поскольку приложения, запрашивающие альтернативный буфер экрана (vi, less, tmux и т. Д.), Предоставляют свои собственные возможности прокрутки. Переопределение этой блокировки в tmux позволяет прокручивать альтернативный экранный буфер терминала который не дает желаемого результата во всех случаях, кроме нескольких случаев. Видеть этот ответ для цитаты из man xterm объясняя альтернативный экран. - kynan
Увы, это не работает в iTerm - Suan
У меня были положительные результаты с этим в iTerm 2 - Keith Smiley


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
2017-12-15 23:44



Теперь я просто играю с мыслью о том, чтобы сделать колесико мыши на границе панели, сделать что-то интересное. Вероятно, что я сделаю, это не колесо карты на границе, а нарисуйте его, чтобы цикл tmux окон был сделан над статусной линией. - Steven Lu
Какая связь с вашим Github? Я хотел бы быть в курсе ваших усилий! Еще одна особенность, которую я ищу, - это дважды щелкнуть копию слова в буфер обмена X, например, вне Tmux. - joeytwiddle
@joeytwiddle Я очень рекомендую github.com/NHDaly/tmux-better-mouse-mode, см. мой другой ответ - Steven Lu


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

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

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


3
2017-12-07 07:03



Спасибо за объяснение, uldtko! Но это не помогает с проблемой прокрутки мыши. Да, с выключенной опцией, gnome-terminal прекращает отправлять три ^[[A а также ^[[B на мышином прокрутке. Это лучше в tmux (не уродливый ^[[A^[[A^[[A в некоторых программах, без уродливой прокрутки истории команд), но сейчас less останавливает прокрутку мыши-прокрутки. - user31494
Украинский? (угадывание iперсонажи) - dotancohen


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

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

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

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

с ним также.


0
2018-01-02 23:48





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

Мой код:

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 строки за раз


0
2018-02-12 23:02