Я только начал использовать tmux, и мне действительно это нравится, но мне нужно иметь возможность прокручивать открытые буферы / панели / окна. Мне все равно, работает ли это с мышью или нет. При поиске на справочной странице tmux я вижу только два экземпляра слова «прокрутка», и оба они имеют отношение к режиму копирования. Есть ли способ прокрутки без дополнительных затрат при входе в режим копирования?
Как мне прокрутить в tmux?
11 ответов
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: В моем tmux 0.8 (и его man-странице) Cb = - это scroll-mode. По-видимому, более новые версии упали.
Ах, это все объясняет. Я думаю, что я начал с 1.1, который был уже после того, как `scroll-mode 'был включен. В OP написано «только два экземпляра слова« scroll »[на странице man]», так что, вероятно, версия без «scroll-mode».
Правильно, у моего tmux нет режима прокрутки. Вам нужно Cb [, чтобы войти в режим копирования, а затем использовать комбинации клавиш emacs или vi для прокрутки. Это кажется большим количеством шагов, чтобы просто прокрутить, но преимущества tmux все еще перевешивают эти неприятности. Я на MacBook и нет ключа PageUp: - . (Кроме того, как мне сделать ключи с уценкой, как ты, Деннис?)
на MacBook fn + up идет прямо в терминальное приложение и никогда не запускает tmux
В macbook, если вы находитесь в режиме прокрутки, вы можете использовать fn + Shift + LeftArrow, чтобы прокрутить страницу вверх.
С клавишами режима vi вы также можете использовать его типично: Cy и Ce для прокрутки вверх / вниз построчно
Ответ @ chaiyachaiya намного лучше (Если вы можете терпеть, чтобы тянуться за мышь)
Чтобы выйти из режима прокрутки, нажмите Escape или Q. Не застрять, как я :)
Нет ли лучшего способа прокрутки tmux, чем стрелки вверх и вниз? Как пакетная прокрутка, как в Ctrl + B похож на VIM?
@CharlieParker: я расширил свой ответ, добавив некоторые привязки навигационных клавиш. Обратите внимание, что вы можете использовать префиксы числового числа, как в vim, поэтому (установите привязки клавиш vi) вы можете нажать 2, затем PageUp (или Ctrl-b (дважды)) и двигаться вверх. два экрана.
Так много хлопот только для выполнения базовых вещей - почему пользовательский интерфейс должен быть таким плохим?
Включены ли по умолчанию линейные прокрутки Shift-j и Shift-k? Вроде как на моей машине.
@mbigras: Кажется, это так.
@DennisWilliamson означает ли это, что tmux по умолчанию находится в режиме vi? Или он имеет только некоторые функции? Линейная прокрутка в этом случае.
@mbigras: со страницы руководства: «mode-keys [vi | emacs] Использовать привязки клавиш в стиле vi или emacs в режиме копирования. По умолчанию используется emacs, если только VISUAL или EDITOR не содержат« vi ».»
@DennisWilliamson спасибо! Имеет смысл, $ echo $ EDITOR # => vim, что вы искали на странице руководства? Например, : / foobar
@mbigras Я искал "ключи режима" и огляделся.
Чтобы выйти, введите Q или Ctrl + J.
CTRL-B, а затем PgUp работает нормально. Тогда я могу использовать PgUp, PgDn или ArrUp, ArrDn. Для выхода и автопрокрутки до конца нажмите Esc
Что ж, вы должны рассмотреть правильный способ установки прокрутки: добавьте в свой 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, печатаются тарабарские символы. Есть идеи?
Это прекрасно работает для меня. Теперь, если только мы сможем определить привязки клавиш, чтобы сделать то же самое (может быть, экран за раз), я буду очень счастливым туристом.
Будущие пользователи мыши tmux: чтобы избавить вас от необходимости снова прокручивать текст до конца, вы можете нажать q, чтобы выйти из режима прокрутки.
С этим хорошо работает прокрутка мышью, но, к сожалению, я больше не могу использовать мышь для выделения текста. Использование тильды и тмукса.
Обратите внимание, что в tmux 2.1 и выше это заменяется на set -g mouse on, и прокрутка автоматически не входит в режим копирования, как это было раньше.
Важное примечание: этот параметр прерывает выделение и копирование текста. Используйте shift + click, чтобы сохранить эту функциональность.
@ Mr.F попробуй выключить mouse-utf8
- мы больше не можем выделять текст с помощью кликов 2) мы не можем прокручивать в vim
Это сработало для меня, но только после убийства сервера tmux с помощью tmux kill-server.
Из моего .tmux.conf:
# Sane scrolling set -g terminal-overrides 'xterm*:smcup@:rmcup@' Это включает собственную прокрутку xterm.
Можете ли вы объяснить, что именно это делает?
Я не знаю, что он делает, но это чистый гений. Наконец, прокрутка tmux работает, ура!
Может быть, это помогает объяснить это? http://blogs.oracle.com/samf/entry/smcup_rmcup_hate
Это не работает для меня на OS X ...
Решение: https://gist.github.com/1297707
Проверьте это, если вы не уверены в ответе togdon: http://superuser.com/questions/310251/use-terminal-scrollbar-with-tmux?lq=1 IMO, если у вас есть только одна панель, это решение работает лучше принятого ответа.
Хорошо, но он ломается (для меня) после отображения некоторого файла с помощью команды less, т. Е. При прокрутке колесика мыши вверх отображается N пустых строк, где N = длина файла, отображаемого с помощью less.
Работает как положено в Ubuntu. Клавиши Pgup и Pgdn позволяют вам прокручивать. Благодарю.
Это действительно странно. Если вы посмотрите на полосу прокрутки, она остается наверху, пока вы не начнете прокручивать; тогда это стреляет к вершине. Я отчасти рад, что это работает, хотя.
Сначала я думал, что это работает, но в конце концов мне пришлось отключить его, иногда он портит мой вывод.
Он не сохраняет буфер прокрутки после (n) (повторного) присоединения
Это не работает для нескольких панелей. Он будет прокручивать главный хост-терминал вместо эмулируемых терминалов, работающих внутри tmux
Это работает для меня в OS X. Для screen я обычно делал нечто подобное в моем .screenrc, чтобы добиться того же эффекта: termcapinfo xterm * ti @: te @
Это, похоже, больше не работает. Когда я прокручиваю, вывод пропускает строки и является неполным.
Для более новых версий ответ ниже моего является правильным.
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
Как это не принятый ответ?
примечание в этом ответе о том, что «недостаточно просто перезагрузить .tmux.conf помогло» и о выходе из всех сеансов tmux для меня (возможно, будет работать kill-server) помогло!
не могли бы вы уточнить, как это работает?
Похоже, что он перенаправляет события мыши при щелчке / прокрутке мыши и т. Д. если панель находится в каком-либо косвенном / буферизованном состоянии (просто режим копирования?), и мышь нажимает кнопку, выполняет прокрутку и т. д. Последняя часть охватывает прокрутку в прямом режиме, сначала переключаясь в косвенный режим. Если бы не эти элементы управления, терминал мог бы интерпретировать события как прокрутку истории, если вообще. С учетом сказанного, я не знаю, смог ли я когда-нибудь заставить мой пейджер и Vim правильно прокручивать одновременно, и я попробовал кучу фрагментов, идущих по кругу.
В моем случае просто opt+ UpArrowи opt+ DownArrowна OSX.
@ fixer1234 Вопрос вообще не касается Linux. tmux также можно использовать в OS X
@slhck: Спасибо. Слишком мутные глаза; Астигматизм включился. Я неправильно прочитал тег tmux как тег linux.
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 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)
Ценю ваш ответ. Но часто ссылки могут сломаться. Здесь всегда полезно добавить основную часть вашего ответа и предоставить ссылку только для справки.
Я бы порекомендовал попробовать подключаемый модуль 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 намного лучше.
Единственное, что работает для меня, это положить следующее в ~/.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.
Последнее, что я попробовал, больше не работало, но это сработало. Странный. set -ga Terminal-Overrides ', xterm *: smcup @: rmcup @'
Это сработало для меня:
vim ~/.tmux.conf set -g mode-mouse on ###Insert this setting with vim, then source the file. tmux source-file ~/.tmux.conf
Какие накладные расходы вас беспокоят?
copy-mode- это способ просмотреть историю (и при желании скопировать из нее материал).