Вопрос или проблема
Я использую iTerm 2.1.4 и Tmux на OS X Yosemite. Я хотел бы иметь возможность прокручивать окна iTerm вверх и вниз, но я не уверен, что контролирует прокрутку. Управляет ли tmux прокруткой, когда я использую его с iTerm, или же iTerm все еще контролирует прокрутку?
Я попробовал использовать различные клавиши, которые должны прокручивать iTerm, но все, что я получаю, это символы “~~~~~” в командной строке. Как я могу прокручивать в этой настройке?
Прокрутка в tmux несколько отличается от простой прокрутки колесиком мыши или трекпадом.
В tmux прокрутка осуществляется сначала отправкой ‘prefix-[‘. Вы увидите небольшое желтое окно в верхнем правом углу окна терминала.
В этом режиме вы можете использовать клавиши со стрелками, PageUp, PageDown, Ctrl-U, Ctrl-D, hjkl (vi-режим) или другие настраиваемые клавиши движения для прокрутки вперед или назад через буфер.
В относительно недавних сборках tmux есть опция, позволяющая использовать мышь в режиме прокрутки.
Добавьте это в ваш .tmux.conf
set-option -g mouse on
Кроме того, если мне не изменяет память, tmux “встроен” в iTerm и, таким образом, такие функции, как мультиплексирование, также встроены. Есть ли причина, по которой вы хотите использовать tmux в iTerm? Встроенный терминал OSX определенно улучшается с помощью мультиплексора, такого как tmux, но iTerm стремится устранить эти недостатки, будучи автономным решением.
РЕДАКТ 1: После обновления до El Capitan я заметил некоторое непривычное поведение при использовании Terminal.app и tmux. Это привело меня к отличной статье, описывающей опции, о которых я не знал и которые, как я надеюсь, дадут более исчерпывающий ответ на ваш вопрос. Все опции, насколько я могу судить, специфичны для tmux и не зависят от версий OSX, так что их использование в Yosemite должно быть в порядке. Ваш вопрос по прокрутке рассматривается здесь, с такими опциями как:
bind-key -t vi-copy WheelUpPane scroll-up
bind-key -t vi-copy WheelDownPane scroll-down
Множество других полезных опций в статье по ссылке ниже.
https://ryanfb.github.io/etc/2015/10/19/tmux_mouse_mode_on_el_capitan.html
Я нашел следующие способы справиться с этой ситуацией (macOS Mojave):
-
Включите режим прокрутки tmux, а затем нажмите клавишу стрелки вверх; iTerm предложит вам установить вышеупомянутую настройку для прокрутки. Но если вы пропустили/отклонили это предложение, то, думаю, оно не будет воспроизведено снова.
-
Перейдите в настройки iTerm -> “Advanced” -> “Scroll wheel sends arrow keys when in alternate screen mode” -> установите “yes”.
Столкнулся с этой проблемой в последние дни. Окружение:
MacOS Big Sur 11.4
iTerm2 сборка 3.4.8
Попробовал
set-option -g mouse on
, и это работает только в режиме ctrl + b + [
.
Прокрутка мышью все еще показывает историю сообщений в обычном режиме.
Наконец, я обнаружил, что нажимать Opt + прокрутка мышью работает только если нет окна разделения tmux.
Добавление к основному ответу:
set-option -g mouse on
работает только для версий tmux >= 2.1
tmux -V
Для более старых версий можно использовать
set -g mode-mouse on
.
Ответ или решение
Использование iTerm2 вместе с tmux на macOS, в данном случае OS X Yosemite, представляет собой задачу, требующую понимания взаимодействия между терминальным эмулятором и мультиплексором терминала. Чтобы разобраться в вопросе прокрутки в этом окружении, необходимо понять, как iTerm2 и tmux работают вместе, а также какие настройки и команды доступны для решения проблемы прокрутки.
Теория
Tmux — это мощный инструмент, который позволяет вам управлять несколькими терминальными сессиями в одном окне. Он поддерживает разделение окна на панели, переключение между сессиями и многим другим. Когда вы используете tmux, он берет на себя контроль над терминалом, включая буфер вывода, который управляет прокруткой текста.
iTerm2 — это эмулятор терминала для macOS, который предоставляет ряд дополнительных функций по сравнению с традиционным терминалом macOS Terminal. Среди таких функций — поддержка нескольких профилей, интеграция с tmux, возможность прокрутки, расширенные опции управления окнами и многое другое.
Когда вы запускаете tmux внутри iTerm2, прокрутка выводимого текста отличается от стандартной, поскольку tmux создаёт собственный буфер вывода. Пытаться прокручивать так же, как в обычном терминале, не получится, так как команды прокрутки и чувствительность мыши должны быть настроены специально для работы с tmux.
Пример
Для управления прокруткой в tmux необходимо активировать режим копирования. Этот режим включается комбинацией клавиш prefix
(обычно Ctrl-b
по умолчанию) и [
. После этого в правом верхнем углу окна вы увидите небольшой индикатор режима.
В режиме копирования вы можете использовать клавиатурные стрелки, PageUp
, PageDown
, а также клавиши Ctrl-U
и Ctrl-D
для более крупной прокрутки страниц вверх и вниз, соответственно. Для тех, кто привык к редактору vi, можно также использовать клавиши hjkl
для навигации в этом режиме.
Для облегчения использования мыши, начиная с более новых версий tmux (>= 2.1), доступны настройки, позволяющие использовать мышь для прокрутки. Для этого необходимо добавить в конфигурационный файл .tmux.conf
следующую строку:
set-option -g mouse on
Применение
Итак, как настроить ваш iTerm2 и tmux для комфортной прокрутки?
-
Настройка tmux: Откройте или создайте файл конфигурации
.tmux.conf
в вашем домашнем каталоге и добавьтеset-option -g mouse on
. Это позволит вам использовать прокрутку мышью, включая колесико мыши в режиме копирования. -
Настройка iTerm2: Перейдите в настройки iTerm2, откройте секцию "Advanced" и установите параметр "Scroll wheel sends arrow keys when in alternate screen mode" в значение "yes". Это поможет iTerm2 корректно интерпретировать сигналы прокрутки.
-
Проверка версии tmux: Убедитесь, что ваша версия tmux — 2.1 или выше, выполнив команду
tmux -V
. Если у вас более старая версия, используйте командуset -g mode-mouse on
, но настоятельно рекомендуется обновить tmux до актуальной версии для расширенной поддержки и функций. -
Используйте комбинации клавиш: В режиме копирования tmux вы можете использовать как клавиатуру, так и мышь (если она включена) для прокрутки.
-
Решение конфликтов: Если у вас возникли проблемы с отображением "
~" при попытке прокрутки, проверьте, нет ли конфликтующих сочетаний клавиш или настроек, которые могут переназначать стандартные команды.
Это решение позволяет эффективно управлять прокруткой в iTerm2 с использованием tmux, улучшая ваш рабочий процесс на macOS. Тщательная настройка обоих инструментов позволяет использовать их возможности на максимуме, создавая комфортное и продуктивное рабочее окружение.