Перейти к содержимому

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

1108

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

607 992 просмотра
chadoh спросил 15 лет назад
C 5 689

11 ответов

1350
Принятый ответ

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 · 15 лет назад · 14

@Chris: В моем tmux 0.8 (и его man-странице) Cb = - это scroll-mode. По-видимому, более новые версии упали.

Dennis Williamson · 15 лет назад · 0

Ах, это все объясняет. Я думаю, что я начал с 1.1, который был уже после того, как `scroll-mode 'был включен. В OP написано «только два экземпляра слова« scroll »[на странице man]», так что, вероятно, версия без «scroll-mode».

Chris Johnsen · 15 лет назад · 1

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

chadoh · 15 лет назад · 4
@chadoh: попробуйте это на своем Macbook: Home: fn-LeftArrow; Конец: fn-RightArrow; Page Up: fn-UpArrow; Page Down: fn-DownArrow. Чтобы сделать keycaps: ` Ctrl`
Dennis Williamson · 15 лет назад · 34

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

Tyler · 15 лет назад · 4

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

Nick Hammond · 13 лет назад · 14

С клавишами режима vi вы также можете использовать его типично: Cy и Ce для прокрутки вверх / вниз построчно

wik · 13 лет назад · 0

Ответ @ chaiyachaiya намного лучше (Если вы можете терпеть, чтобы тянуться за мышь)

Jonathan Hartley · 12 лет назад · 0

Чтобы выйти из режима прокрутки, нажмите Escape или Q. Не застрять, как я :)

Graham Perks · 11 лет назад · 0

Нет ли лучшего способа прокрутки tmux, чем стрелки вверх и вниз? Как пакетная прокрутка, как в Ctrl + B похож на VIM?

Charlie Parker · 10 лет назад · 0

@CharlieParker: я расширил свой ответ, добавив некоторые привязки навигационных клавиш. Обратите внимание, что вы можете использовать префиксы числового числа, как в vim, поэтому (установите привязки клавиш vi) вы можете нажать 2, затем PageUp (или Ctrl-b (дважды)) и двигаться вверх. два экрана.

Dennis Williamson · 10 лет назад · 1

Так много хлопот только для выполнения базовых вещей - почему пользовательский интерфейс должен быть таким плохим?

Dima Knivets · 10 лет назад · 0

Включены ли по умолчанию линейные прокрутки Shift-j и Shift-k? Вроде как на моей машине.

mbigras · 9 лет назад · 0

@mbigras: Кажется, это так.

Dennis Williamson · 9 лет назад · 0

@DennisWilliamson означает ли это, что tmux по умолчанию находится в режиме vi? Или он имеет только некоторые функции? Линейная прокрутка в этом случае.

mbigras · 9 лет назад · 0

@mbigras: со страницы руководства: «mode-keys [vi | emacs] Использовать привязки клавиш в стиле vi или emacs в режиме копирования. По умолчанию используется emacs, если только VISUAL или EDITOR не содержат« vi ».»

Dennis Williamson · 9 лет назад · 0

@DennisWilliamson спасибо! Имеет смысл, $ echo $ EDITOR # => vim, что вы искали на странице руководства? Например, : / foobar

mbigras · 9 лет назад · 0

@mbigras Я искал "ключи режима" и огляделся.

Dennis Williamson · 9 лет назад · 0

Чтобы выйти, введите Q или Ctrl + J.

Mateen Ulhaq · 9 лет назад · 0

CTRL-B, а затем PgUp работает нормально. Тогда я могу использовать PgUp, PgDn или ArrUp, ArrDn. Для выхода и автопрокрутки до конца нажмите Esc

Markus Zeller · 7 лет назад · 0
Dennis Williamson ответил 15 лет назад
D 75 594
252

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

Это прекрасно работает для меня. Теперь, если только мы сможем определить привязки клавиш, чтобы сделать то же самое (может быть, экран за раз), я буду очень счастливым туристом.

Jonathan Hartley · 12 лет назад · 0

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

Jezen Thomas · 12 лет назад · 10

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

friederbluemle · 11 лет назад · 10

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

thrnio · 10 лет назад · 26

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

Shadoninja · 10 лет назад · 16

@ Mr.F попробуй выключить mouse-utf8

Gareth Davidson · 9 лет назад · 0
  1. мы больше не можем выделять текст с помощью кликов 2) мы не можем прокручивать в vim
pltrdy · 8 лет назад · 1

Это сработало для меня, но только после убийства сервера tmux с помощью tmux kill-server.

Blaine Lafreniere · 7 лет назад · 0
chaiyachaiya ответил 13 лет назад
C 2 521
129

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

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

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

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

Ivo · 14 лет назад · 27

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

oneself · 14 лет назад · 9

Может быть, это помогает объяснить это? http://blogs.oracle.com/samf/entry/smcup_rmcup_hate

Denilson Sá Maia · 14 лет назад · 0

Это не работает для меня на OS X ...

Nick · 14 лет назад · 5
Nick · 14 лет назад · 17

Проверьте это, если вы не уверены в ответе togdon: http://superuser.com/questions/310251/use-terminal-scrollbar-with-tmux?lq=1 IMO, если у вас есть только одна панель, это решение работает лучше принятого ответа.

thameera · 13 лет назад · 5

Хорошо, но он ломается (для меня) после отображения некоторого файла с помощью команды less, т. Е. При прокрутке колесика мыши вверх отображается N пустых строк, где N = длина файла, отображаемого с помощью less.

dehmann · 12 лет назад · 2

Работает как положено в Ubuntu. Клавиши Pgup и Pgdn позволяют вам прокручивать. Благодарю.

Shnkc · 12 лет назад · 0

Это действительно странно. Если вы посмотрите на полосу прокрутки, она остается наверху, пока вы не начнете прокручивать; тогда это стреляет к вершине. Я отчасти рад, что это работает, хотя.

dylnmc · 11 лет назад · 0
Brian Maltzan · 11 лет назад · 1

Сначала я думал, что это работает, но в конце концов мне пришлось отключить его, иногда он портит мой вывод.

nha · 11 лет назад · 0

Он не сохраняет буфер прокрутки после (n) (повторного) присоединения

Ray · 10 лет назад · 0

Это не работает для нескольких панелей. Он будет прокручивать главный хост-терминал вместо эмулируемых терминалов, работающих внутри tmux

Shadoninja · 10 лет назад · 1

Это работает для меня в OS X. Для screen я обычно делал нечто подобное в моем .screenrc, чтобы добиться того же эффекта: termcapinfo xterm * ti @: te @

nishanths · 10 лет назад · 0

Это, похоже, больше не работает. Когда я прокручиваю, вывод пропускает строки и является неполным.

Ashesh Kumar Singh · 8 лет назад · 0

Для более новых версий ответ ниже моего является правильным.

togdon · 8 лет назад · 0
togdon ответил 14 лет назад
T 1 407
43

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 · 9 лет назад · 1

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

Colin D · 9 лет назад · 2

не могли бы вы уточнить, как это работает?

oligofren · 9 лет назад · 1

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

John P · 8 лет назад · 0
Flov ответил 10 лет назад
F 531
12

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

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

slhck · 11 лет назад · 0

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

fixer1234 · 11 лет назад · 0
Yth ответил 11 лет назад
Y 221
10

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 
Emanuel Berg ответил 13 лет назад
E 344
6

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 · 10 лет назад · 0
muneeb ответил 10 лет назад
M 66
5

Я бы порекомендовал попробовать подключаемый модуль 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 · 8 лет назад · 1
aymericbeaumet ответил 9 лет назад
A 151
4

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

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

phocks · 10 лет назад · 0
phocks ответил 10 лет назад
P 160
1

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

vim ~/.tmux.conf set -g mode-mouse on ###Insert this setting with vim, then source the file. tmux source-file ~/.tmux.conf 
Chhetri ответил 9 лет назад
C 11
Загрузка ответов…