Как мне прокрутить в tmux?


1296

Я только начал использовать tmux, и мне действительно это нравится, но мне нужно иметь возможность прокручивать открытые буферы / панели / окна. Мне все равно, работает ли это с мышью или нет. При поиске на справочной странице tmux я обнаружил только два экземпляра слова «прокрутка», и оба они имеют отношение к режиму копирования. Есть ли способ прокрутки без дополнительных затрат при входе в режим копирования?


8
Какие накладные расходы вас беспокоят? copy-modeэто способ просмотреть историю (и при желании скопировать из нее материал).
Крис Джонсен

2
для меня вы можете нажать f7 для режима прокрутки и q, чтобы выйти
JohnMerlino

7
set -g mode-mouse onper @ chaiyachaiya ответ стал для меня победителем
Питер Берг

Ответы:


1573

Ctrl- bзатем [вы можете использовать обычные навигационные клавиши для прокрутки (например, Up Arrowили 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.


14
Я думаю , что C-b =это choose-bufferпо умолчанию. Вы имели в виду C-b [(что copy-modeпо умолчанию)? Также вы также можете использовать C-b PageUpрежим копирования непосредственно на предыдущей странице (очень удобно, когда вы знаете, что вы хотите просмотреть / скопировать уже с текущей страницы).
Крис Джонсен

4
Правильно, у моего tmux нет режима прокрутки. Вам нужно C-b [войти в режим копирования и затем использовать комбинации клавиш emacs или vi для прокрутки. Это кажется большим количеством шагов, чтобы просто прокрутить, но преимущества tmux все еще перевешивают эти неприятности. Я на MacBook и нет ключа PageUp: - \. (Кроме того, как я могу сделать ключи с уценкой, как ты, Деннис?)
chadoh

44
@chadoh: попробуйте это на своем Macbook: Home: fn-LeftArrow; Конец: fn-RightArrow; Page Up: fn-UpArrow; Page Down: fn-DownArrow. Чтобы сделать keycaps:<kbd>Ctrl</kbd>
Деннис Уильямсон

5
на macbook fn + up направляется прямо к терминальному приложению и никогда не запускает tmux
Tyler

15
В macbook, если вы находитесь в режиме прокрутки, вы можете использовать fn + Shift + LeftArrow, чтобы прокрутить страницу вверх.
Ник Хаммонд,

306

Ну, вы должны рассмотреть правильный способ установки прокрутки: добавьте в свой 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.


5
Когда я делаю это, щелчки мыши и прокрутки приводят к тому, что в область подсказки терминала, который я использую с tmux, печатаются тарабарские символы. Есть идеи?
13

22
Будущие пользователи мыши tmux: чтобы избавить вас от необходимости снова прокручивать страницу до конца, вы можете нажать, qчтобы выйти из режима прокрутки.
Джезен Томас

15
С этим хорошо работает прокрутка мышью, но, к сожалению, я больше не могу использовать мышь для выделения текста. Использование тильды и тмукса.
Friederbluemle

27
Обратите внимание, что в tmux 2.1 и выше это заменяется на set -g mouse on, и прокрутка не входит в режим копирования автоматически, как это было раньше.
thrnio

25
Важное примечание: этот параметр прерывает выделение и копирование текста. Используйте shift + click для поддержания этой функциональности.
Шадониня,

141

Из моего .tmux.conf:

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

Это включает собственную прокрутку xterm.


28
Можете ли вы объяснить, что именно это делает?
Иво

11
Я не знаю, что он делает, но это чистый гений. Наконец, прокрутка tmux работает, ура!
себя

5
Это не работает для меня на OS X ...
Ник

17
Решение: gist.github.com/1297707
Ник

6
Проверьте это, если вы не уверены в ответе togdon: superuser.com/questions/310251/… IMO, если у вас только одна панель, это решение работает лучше, чем принятый ответ.
thameera

57

Для новейшего 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

взято с https://github.com/tmux/tmux/issues/145


1
Как это не принятый ответ?
Марсель

2
примечание в этом ответе о том, что «недостаточно просто перезагрузить .tmux.conf помогло» и о выходе из всех сеансов tmux для меня (возможно, будет работать kill-server) помогло!
Колин Д.

1
не могли бы вы рассказать, как это работает?
oligofren

Похоже, что он перенаправляет события мыши при щелчке / прокрутке мыши и т. Д. если панель находится в каком-либо косвенном / буферизованном состоянии (просто режим копирования?), и мышь нажимает кнопку, выполняет прокрутку и т. д. Последняя часть охватывает прокрутку в прямом режиме, сначала переключаясь в косвенный режим. Если бы не эти элементы управления, терминал мог бы интерпретировать события как прокрутку истории, если вообще. С учетом сказанного, я не знаю, смог ли я когда-нибудь заставить мой пейджер и Vim правильно прокручивать одновременно, и я попробовал кучу фрагментов, идущих по кругу.
Джон П,

2
@chefarov - за комментарий к другому ответу вы можете сделать это, Shift+clickкогда у вас включен режим мыши.
Брендан Мур

14

В моем случае просто opt+ UpArrowи opt+ DownArrowна OSX.


@ fixer1234 Вопрос вообще не касается Linux. tmuxможно использовать и в OS X
slhck

@slhck: Спасибо. Слишком мутные глаза; Астигматизм включился. Я неправильно прочитал тег tmux как тег linux.
fixer1234

11

Это то, как я это сделал, и причины, по которым я думаю, что это лучше, чем по умолчанию.

Чтобы попробовать, поместите все разделы кода в ~/.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

7

Я много искал это, и лучшее решение для меня работает, как упомянуто в этом подробном руководстве: 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 )


7

Я бы порекомендовал попробовать подключаемый модуль tmux-better-mouse-mode, чтобы решить большинство проблем, связанных с мышью tmux.

Он совместим с Tmux 2.1+ и новым set-option -g mouse onподходом.


1
Спасибо, это лучшее решение для меня. Он охватывает все привязки моих колесиков мыши, которые я добавил вручную (поэтому они мне больше не нужны), и есть две функции-убийцы, которые я очень хотел: scroll-without-changing-paneв сочетании с scroll-without-changing-paneи emulate-scroll-for-no-mouse-alternate-buffer. Теперь мой опыт использования tmux намного лучше.
selurvedu

6

Единственное, что работает для меня, это положить следующее в ~/.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:

Используйте это, если вы хотите "замазку" в качестве типа терминала: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


2
Это фактически решает мою проблему с прокруткой в ​​приложении для iPhone.
NathaneilCapital

Последнее, что я попробовал, больше не работало, но это сработало. Странный. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
фокс

4

Это сработало для меня:

vim ~/.tmux.conf
set -g mode-mouse on      ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf

2
Начиная с версии 2.1 (18 октября 2015 г.) опция должна бытьset -g mouse on
naoko

+1 за предоставление полного пути к файлу конфигурации. Ответ @ chaiyachaiya был бы идеальным в противном случае.
Джон Макфарлейн

1

FWIW, на MacBook / OSX Mojave, после ctrl+[сделать:

  • up arrow для очереди
  • down arrow для линии вниз
  • fn + up arrow для страницы вверх
  • fn + down arrow для страницы вниз
  • q чтобы выйти из режима просмотра

0

Единственное, что мне помогло, это vim ~ / .tmux.conf установить -g mode-mouse на ### Вставить этот параметр с помощью vim, а затем получить исходный файл. исходный файл tmux ~ / .tmux.conf


Не могли бы вы использовать некоторое форматирование, чтобы сделать это более понятным? Используйте кнопку «Редактировать», а затем посмотрите на опции, доступные в редакторе, чтобы добавить полезные форматы.
music2myear

-2
  • Ctrl+ A- начать прокрутку
  • Ctrl+ C- остановить прокрутку

3
Этот пост слишком короткий, чтобы с пользой ответить на вопрос. Это добавляет очень мало новой информации к уже опубликованным ответам; ничего не говорится о том, как прокручивать (только как переключаться в режим копирования и выходить из него). Кроме того, по умолчанию используется комбинация клавиш префикса команды Ctrl-B( Ctrl-Aпо умолчанию для экрана GNU).
Энтони Геогеган

1
Не уверен, что автор этого ответа хотя бы понял вопрос. Это бесполезно и просто неправильно.
Вик

2
Я долго искал, как остановить прокрутку, спасибо, что указал на это!
PERR0_HUNTER
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.