Я только начал использовать tmux, и мне действительно это нравится, но мне нужно иметь возможность прокручивать открытые буферы / панели / окна. Мне все равно, работает ли это с мышью или нет. При поиске на справочной странице tmux я вижу только два экземпляра слова "прокрутка", и оба они имеют отношение к режиму копирования. Есть ли способ прокрутки без дополнительных затрат при входе в режим копирования?
11 ответов
Ctrl - b затем [ затем вы можете использовать обычные навигационные клавиши для прокрутки (например, Стрелка вверх или PgDn). Нажмите q, чтобы выйти из режима прокрутки.
В качестве альтернативы вы можете нажать Ctrl - b PgUp, чтобы перейти непосредственно в режим копирования и прокрутить одну страницу вверх (как это звучит, как вы хотите, большую часть времени)
В режиме vi
(см. Ниже) вы также можете прокручивать страницу вверх / вниз построчно, используя Shift -k и Shift- j (если вы уже находитесь в режиме прокрутки). Без смещения курсор перемещается вместо страницы.
Выдержки из справочной страницы:
Управлять tmux можно с подключенного клиента, используя комбинацию клавиш префиксной клавиши, по умолчанию «C-b» (Ctrl-b), за которой следует командная клавиша.
The default command key bindings are:
[ Enter copy mode to copy text or view the history.
Function vi emacs
-------- -- -----
Half page down C-d M-Down
Half page up C-u M-Up
Next page C-f Page down
Previous page C-b Page up
Scroll down C-Down or C-e C-Down
Scroll up C-Up or C-y C-Up
Search again n n
Search again in reverse N N
Search backward ? C-r
Search forward / C-s
Плюс еще куча. Обратите внимание, что вы должны нажать C-b
дважды, если вы используете это для перехода на страницу вверх, так как C-b
связан как командная клавиша. См. Справочную страницу для получения информации о предварительном отображении команды режима копирования с количеством повторов.
Вы можете установить режим привязки клавиш, используя Ctrl - b, затем
:set-window-option mode-keys emacs
или vi
.
Что ж, вам следует подумать о том, как правильно настроить прокрутку: добавьте в свой tmux.conf
set -g mouse on #For tmux version 2.1 and up
или же
set -g mode-mouse on #For tmux versions < 2.1
У меня это работало в окнах и панелях. Теперь tmux просто идеален.
Практический tmux имеет больше информации о файлах tmux.conf.
Из моего .tmux.conf:
# Sane scrolling
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
Это включает собственную прокрутку xterm.
Для новейшего tmux 2.1, для разумной прокрутки мышью, это правильный ответ:
set -g mouse on
" sane scrolling:
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"
недостаточно просто перезагрузить ваш .tmux.conf, вам нужно перезапустить tmux, например, tmux kill-server && tmux
В моем случае просто выберите опцию + UpArrow и opt + DownArrow для OSX.
Это способ, которым я сделал это, и причины, почему я думаю, что это лучше, чем способ по умолчанию.
Чтобы попробовать, поместите все разделы кода в ~/.tmux.conf
.
Шаг 1. Измените префиксный ключ, чтобы вам не пришлось набирать один бит. «B» - это, казалось бы, клавиша закрытия, но она находится в середине двух указательных пальцев (на «F» и «J» соответственно). Поскольку этот ярлык необходим в tmux, Cj намного лучше, так как включает в себя нулевое движение руки (кроме нажатия клавиши).
set -g prefix C-j
unbind C-b
bind C-j send-prefix
Шаг 2. "S" (для входа в режим копирования): 1) закрыть (по той же причине, что и выше), 2) задействовать другую руку (сравните: 1-2 в боксе или команда ls
для просмотра файлов в каталоге), и 3) можно рассматривать как мнемонику для "прокрутки" (хотя режим копирования - это не только прокрутка).
bind s copy-mode
Шаг 3. Последняя часть, фактическая прокрутка. 'P' и 'N' знакомы для этой цели пользователям Emacs. Они близки, интуитивно понятны ("P" выше "N" на клавиатуре) и мнемоничны ("предыдущий" и "следующий"). Если вы просто выполнили прокрутку в Emacs, а затем пошли в tmux, есть смысл использовать эти ярлыки.
Тем не менее, я обнаружил, что «I» и «K» даже лучше - они даже ближе, чем «P» и «N», и интуитивно понятны (по той же причине); что касается мнемоники - поскольку прокрутка - это обычное дело, мнемоника не будет иметь большого значения, поскольку быстрые клавиши скоро обойдут ваш мозг и войдут в мышечную память.
bind -t emacs-copy 'p' scroll-up
bind -t emacs-copy 'n' scroll-down
bind -t emacs-copy 'i' scroll-up
bind -t emacs-copy 'k' scroll-down
Я много искал это, и лучшее решение для меня работает, как упомянуто в этом подробном руководстве:http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/
Добавьте эти привязки в ~/.tmux.conf:
set -g mode-mouse on
unbind +
bind + \
new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
swap-pane -s tmux-zoom.0 \;\
select-window -t tmux-zoom
unbind -
bind - \
last-window \;\
swap-pane -s tmux-zoom.0 \;\
kill-window -t tmux-zoom
С реализованным выше подходом вы можете также копировать из панелей в окне, сначала увеличивая масштаб каждой панели с помощью Prefix +.
Одной важной деталью, которая отсутствовала в режиме мыши, является нажатие клавиши Shift перед выбором области для копирования. Это скопирует его в традиционный терминальный буфер вместо буфера копирования tmux. (https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues)
Единственное, что работает для меня, это поместить следующее в ~/.tmux.conf
# 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"
(может потребоваться перезагрузка, чтобы это вступило в силу)
Обновить:
Я обнаружил, что если вы измените настройку в Putty Connection> Data> Terminal-type на "putty" (используется для исправления некоторых проблем форматирования) с "xterm", то это решение перестает работать.
Обновление 2:
Используйте это, если вы хотите использовать "putty" в качестве типа терминала: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"
Я бы порекомендовал попробовать подключаемый модуль tmux-better-mouse-mode, чтобы решить большинство проблем, связанных с мышью tmux.
Он совместим с Tmux 2.1+ и новым подходом set-option -g mouse on
.
Это сработало для меня:
vim ~/.tmux.conf
set -g mode-mouse on ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf
- Ctrl + A - начать прокрутку
- Ctrl + C - остановить прокрутку