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

607785
chadoh

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

1108
Какие накладные расходы вас беспокоят? `copy-mode` - это способ просмотреть историю (и при желании скопировать из нее материал). Chris Johnsen 14 лет назад 7
для меня вы можете нажать F7 для режима прокрутки и Q, чтобы выйти JohnMerlino 10 лет назад 1
`set -g mode-mouse on` per @ chaiyachaiya для меня победитель Peter Berg 8 лет назад 2

11 ответов на вопрос

1350
Dennis Williamson

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.

Я думаю, что `Cb =` это `выбор-буфер` по умолчанию. Вы имели в виду `Cb [` (по умолчанию это `copy-mode`)? Также вы можете также использовать `Cb PageUp` для запуска режима копирования непосредственно на предыдущей странице (очень удобно, когда вы знаете, что вы хотите просмотреть / скопировать уже с текущей страницы). Chris Johnsen 14 лет назад 14
@Chris: В моем tmux 0.8 (и его man-странице) `Cb =` - это `scroll-mode`. [По-видимому] (http://tmux.cvs.sourceforge.net/viewvc/tmux/tmux/CHANGES), более новые версии упали. Dennis Williamson 14 лет назад 0
Ах, это все объясняет. Я думаю, что я начал с 1.1, который был уже после того, как `scroll-mode 'был включен. В OP написано «только два экземпляра слова« scroll »[на странице man]», так что, вероятно, версия без «scroll-mode». Chris Johnsen 14 лет назад 1
Правильно, у моего tmux нет режима прокрутки. Вам нужно `Cb [`, чтобы войти в режим копирования, а затем использовать комбинации клавиш emacs или vi для прокрутки. Это кажется большим количеством шагов, чтобы просто прокрутить, но преимущества tmux все еще перевешивают эти неприятности. Я на MacBook и нет ключа PageUp: - \. (Кроме того, как мне сделать ключи с уценкой, как ты, Деннис?) chadoh 14 лет назад 4
@chadoh: попробуйте это на своем Macbook: Home: fn-LeftArrow; Конец: fn-RightArrow; Page Up: fn-UpArrow; Page Down: fn-DownArrow. Чтобы сделать keycaps: ` Ctrl` Dennis Williamson 14 лет назад 34
на MacBook fn + up идет прямо в терминальное приложение и никогда не запускает tmux Tyler 13 лет назад 4
В macbook, если вы находитесь в режиме прокрутки, вы можете использовать fn + Shift + LeftArrow, чтобы прокрутить страницу вверх. Nick Hammond 11 лет назад 14
С клавишами режима vi вы также можете использовать его типично: Cy и Ce для прокрутки вверх / вниз построчно wik 11 лет назад 0
Ответ @ chaiyachaiya намного лучше (Если вы можете терпеть, чтобы тянуться за мышь) Jonathan Hartley 11 лет назад 0
Чтобы выйти из режима прокрутки, нажмите Escape или Q. Не застрять, как я :) Graham Perks 9 лет назад 0
Нет ли лучшего способа прокрутки tmux, чем стрелки вверх и вниз? Как пакетная прокрутка, как в Ctrl + B похож на VIM? Charlie Parker 8 лет назад 0
@CharlieParker: я расширил свой ответ, добавив некоторые привязки навигационных клавиш. Обратите внимание, что вы можете использовать префиксы числового числа, как в `vim`, поэтому (установите привязки клавиш vi) вы можете нажать` 2`, затем `PageUp` (или` Ctrl-b` (дважды)) и двигаться вверх. два экрана. Dennis Williamson 8 лет назад 1
Так много хлопот только для выполнения базовых вещей - почему пользовательский интерфейс должен быть таким плохим? Dima Knivets 8 лет назад 0
Включены ли по умолчанию линейные прокрутки `Shift-j` и` Shift-k`? Вроде как на моей машине. mbigras 7 лет назад 0
@mbigras: Кажется, это так. Dennis Williamson 7 лет назад 0
@DennisWilliamson означает ли это, что tmux по умолчанию находится в режиме vi? Или он имеет только некоторые функции? Линейная прокрутка в этом случае. mbigras 7 лет назад 0
@mbigras: со страницы руководства: «mode-keys [vi | emacs] Использовать привязки клавиш в стиле vi или emacs в режиме копирования. По умолчанию используется emacs, если только VISUAL или EDITOR не содержат« vi ».» Dennis Williamson 7 лет назад 0
@DennisWilliamson спасибо! Имеет смысл, `$ echo $ EDITOR # => vim`, что вы искали на странице руководства? Например, `: / foobar` mbigras 7 лет назад 0
@mbigras Я искал "ключи режима" и огляделся. Dennis Williamson 7 лет назад 0
Чтобы выйти, введите `Q` или` Ctrl` + `J`. Mateen Ulhaq 7 лет назад 0
`CTRL-B`, а затем` PgUp` работает нормально. Тогда я могу использовать `PgUp`,` PgDn` или `ArrUp`,` ArrDn`. Для выхода и автопрокрутки до конца нажмите `Esc` Markus Zeller 5 лет назад 0
252
chaiyachaiya

Что ж, вы должны рассмотреть правильный способ установки прокрутки: добавьте в свой 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, печатаются тарабарские символы. Есть идеи? ely 11 лет назад 4
Это прекрасно работает для меня. Теперь, если только мы сможем определить привязки клавиш, чтобы сделать то же самое (может быть, экран за раз), я буду очень счастливым туристом. Jonathan Hartley 11 лет назад 0
Будущие пользователи мыши tmux: чтобы избавить вас от необходимости снова прокручивать текст до конца, вы можете нажать `q`, чтобы выйти из режима прокрутки. Jezen Thomas 10 лет назад 10
С этим хорошо работает прокрутка мышью, но, к сожалению, я больше не могу использовать мышь для выделения текста. Использование тильды и тмукса. friederbluemle 9 лет назад 10
Обратите внимание, что в tmux 2.1 и выше это заменяется на `set -g mouse on`, и прокрутка автоматически не входит в режим копирования, как это было раньше. thrnio 9 лет назад 26
Важное примечание: этот параметр прерывает выделение и копирование текста. Используйте shift + click, чтобы сохранить эту функциональность. Shadoninja 8 лет назад 16
@ Mr.F попробуй `выключить mouse-utf8` Gareth Davidson 8 лет назад 0
1) мы больше не можем выделять текст с помощью кликов 2) мы не можем прокручивать в vim pltrdy 6 лет назад 1
Это сработало для меня, но только после убийства сервера tmux с помощью `tmux kill-server`. Blaine Lafreniere 6 лет назад 0
129
togdon

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

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

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

Можете ли вы объяснить, что именно это делает? Ivo 13 лет назад 27
Я не знаю, что он делает, но это чистый гений. Наконец, прокрутка tmux работает, ура! oneself 12 лет назад 9
Может быть, это помогает объяснить это? http://blogs.oracle.com/samf/entry/smcup_rmcup_hate Denilson Sá Maia 12 лет назад 0
Это не работает для меня на OS X ... Nick 12 лет назад 5
Решение: https://gist.github.com/1297707 Nick 12 лет назад 17
Проверьте это, если вы не уверены в ответе togdon: http://superuser.com/questions/310251/use-terminal-scrollbar-with-tmux?lq=1 IMO, если у вас есть только одна панель, это решение работает лучше принятого ответа. thameera 11 лет назад 5
Хорошо, но он ломается (для меня) после отображения некоторого файла с помощью команды `less`, т. Е. При прокрутке колесика мыши вверх отображается N пустых строк, где N = длина файла, отображаемого с помощью` less`. dehmann 11 лет назад 2
Работает как положено в Ubuntu. Клавиши Pgup и Pgdn позволяют вам прокручивать. Благодарю. Shnkc 10 лет назад 0
Это действительно странно. Если вы посмотрите на полосу прокрутки, она остается наверху, пока вы не начнете прокручивать; тогда это стреляет к вершине. Я отчасти рад, что это работает, хотя. dylnmc 9 лет назад 0
https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues Brian Maltzan 9 лет назад 1
Сначала я думал, что это работает, но в конце концов мне пришлось отключить его, иногда он портит мой вывод. nha 9 лет назад 0
Он не сохраняет буфер прокрутки после (n) (повторного) присоединения Ray 8 лет назад 0
Это не работает для нескольких панелей. Он будет прокручивать главный хост-терминал вместо эмулируемых терминалов, работающих внутри tmux Shadoninja 8 лет назад 1
Это работает для меня в OS X. Для `screen` я обычно делал нечто подобное в моем` .screenrc`, чтобы добиться того же эффекта: `termcapinfo xterm * ti @: te @` nishanths 8 лет назад 0
Это, похоже, больше не работает. Когда я прокручиваю, вывод пропускает строки и является неполным. Ashesh Kumar Singh 7 лет назад 0
Для более новых версий ответ ниже моего является правильным. togdon 7 лет назад 0
43
Flov

For the newest tmux 2.1, to scroll with your mouse sanely, this is the right answer:

set -g mouse on " sane scrolling: bind -n WheelUpPane if-shell -F -t = "#" "send-keys -M" "if -Ft= '#' 'send-keys -M' 'copy-mode -e; send-keys -M'" 

it's not enough to just reload your .tmux.conf you need to restart your tmux, e.g. tmux kill-server && tmux

taken from https://github.com/tmux/tmux/issues/145

Как это не принятый ответ? Marcel 7 лет назад 1
примечание в этом ответе о том, что «недостаточно просто перезагрузить .tmux.conf помогло» и о выходе из всех сеансов tmux для меня (возможно, будет работать kill-server) помогло! Colin D 7 лет назад 2
не могли бы вы уточнить, как это работает? oligofren 7 лет назад 1
Похоже, что он перенаправляет события мыши при щелчке / прокрутке мыши и т. Д. если панель находится в каком-либо косвенном / буферизованном состоянии (просто режим копирования?), и мышь нажимает кнопку, выполняет прокрутку и т. д. Последняя часть охватывает прокрутку в прямом режиме, сначала переключаясь в косвенный режим. Если бы не эти элементы управления, терминал мог бы интерпретировать события как прокрутку истории, если вообще. С учетом сказанного, я не знаю, смог ли я когда-нибудь заставить мой пейджер и Vim правильно прокручивать одновременно, и я попробовал кучу фрагментов, идущих по кругу. John P 6 лет назад 0
12
Yth

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

@ fixer1234 Вопрос вообще не касается Linux. `tmux` также можно использовать в OS X slhck 9 лет назад 0
@slhck: Спасибо. Слишком мутные глаза; Астигматизм включился. Я неправильно прочитал тег tmux как тег linux. fixer1234 9 лет назад 0
10
Emanuel Berg

This is the way I made it work, and the reasons why I think it is better than the default way.

To try it out, put all the code sections in ~/.tmux.conf.

Step 1. Change the prefix key so you won't have to reach one bit. 'B' is seemingly a close key, but it is in the middle of the two index fingers (at 'F' and 'J', respectively). Because that shortcut is essential in tmux, C-j is much better as it involves zero hand movement (apart from hitting the key).

set -g prefix C-j unbind C-b bind C-j send-prefix 

Step 2. 'S' (to enter copy-mode) is: 1) close (same reason as above), 2) involves the other hand (compare: the 1-2 in boxing, or the ls command to view files in a directory), and 3) could be thought of as mnemonic for "scroll" (although the copy-mode isn't just about scrolling).

bind s copy-mode 

Step 3. The last part, the actual scrolling. 'P' and 'N' are familiar for this purpose to the Emacs users. They are close, intuitive ('P' is above 'N' on the keyboard), and mnemonic ("previous" and "next"). If you just did some scrolling in Emacs, and then go to tmux, it makes sense to have those shortcuts.

However, I found that 'I' and 'K' are even better - they are even closer than 'P' and 'N', and intuitive (for the same reason); as for mnemonics - as scrolling is such a common thing to do, mnemonics won't really matter as the shortcuts will soon bypass your brain and enter the muscle memory.

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 
6
muneeb

I searched around a lot for this and the best solution for me works as mentioned in this detailed guide: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Add these bindings in ~/.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 

With the above approach implemented, you can copy from panes in a window as well by zooming into each pane first using Prefix +.

One important detail that was missing with the mouse mode is to press Shift before selecting an area to copy. This will copy it to traditional terminal buffer instead of the tmux copy buffer. (https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues)

Ценю ваш ответ. Но часто ссылки могут сломаться. Здесь всегда полезно добавить основную часть вашего ответа и предоставить ссылку только для справки. Prasanna 8 лет назад 0
5
aymericbeaumet

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

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

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

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

Это фактически решает мою проблему с прокруткой в ​​приложении для iPhone. NathaneilCapital 8 лет назад 1
Последнее, что я попробовал, больше не работало, но это сработало. Странный. `set -ga Terminal-Overrides ', xterm *: smcup @: rmcup @'` phocks 8 лет назад 0
1
Chhetri

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

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