Як мені прокрутити tmux?


1292

Я щойно почав використовувати tmux, і мені це дуже подобається, але мені потрібно мати можливість прокрутки в буферах / панелях / вікнах, які я відкрив. Мені все одно, працює вона мишею чи ні. Коли я шукаю сторінку tmux man, я знаходжу лише два екземпляри слова "прокрутка", які навіть відображаються, і обидва мають відношення до режиму копіювання. Чи є спосіб прокрутки без усіх накладних витрат в режимі копіювання?


8
Що за накладні витрати ти турбуєшся? copy-modeце спосіб перегляду історії (і необов’язково копіювати з неї речі).
Кріс Джонсен

2
для мене ви можете натиснути f7 для режиму прокрутки, а q - щоб вийти
JohnMerlino

7
set -g mode-mouse onВідповідь per @ chaiyachaiya для мене був переможцем
Пітер Берг

Відповіді:


1567

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: - \. (Також, як мені зробити ключі з розміткою, як ти,
Деннісе

44
@chadoh: Спробуйте це на своєму Macbook: Домашня сторінка: fn-LeftArrow; Кінець: fn-RightArrow; Page Up: fn-UpArrow; Сторінка вниз: fn-DownArrow. Для виготовлення брелоків:<kbd>Ctrl</kbd>
Денніс Вільямсон

5
на macbook, fn + up переходить безпосередньо до додатка для терміналів і ніколи не потрапляє на tmux
Тайлер

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. Будь-які ідеї?
ely

22
Майбутні користувачі миші tmux: щоб уникнути необхідності знову прокручувати донизу перед введенням, ви можете натиснути, qщоб вийти з режиму прокрутки.
Єзен Томас

15
Прокручування миші добре справляється з цим, але, на жаль, я більше не можу використовувати мишу для вибору тексту. Використання Tilda та tmux.
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/isissue/145


1
Як це не прийнята відповідь?
Марсель

2
Примітка у цій відповіді про те, що "недостатньо просто перезавантажити .tmux.conf допомогло", і закриття всіх сеансів tmux для мене (можливо, kill-сервер спрацює) допомогло!
Колін Д

1
Ви могли б детальніше розповісти, як це працює?
олігофрен

Схоже, він пересилає події миші при натисканні / прокрутці миші тощо. якщо панель перебуває в будь-якому непрямому / буферному стані (просто режим копіювання?), а миша натискає кнопку, прокручує і т. д. Остання частина охоплює прокрутку в прямому режимі, перейшовши спочатку в непрямий режим. Якщо немає цих елементів керування, термінал може інтерпретувати події як прокручування історії, якщо вона взагалі є. З урахуванням сказаного, я не знаю, чи мені колись вдалося заставити пейджер і Віма правильно прокручувати одночасно, і я спробував купу фрагментів, що збираються навколо.
Іван П

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, має сенс мати ці ярлики.

Однак я виявив, що "Я" і "К" ще кращі - вони навіть ближче, ніж "Р" і "Н", і інтуїтивно зрозумілі (з тієї ж причини); що стосується мнемоніки - так як прокручування є такою звичайною справою, мнемоніка насправді не має значення, оскільки ярлики незабаром обійдуть ваш мозок і увійдуть у м’язову пам’ять.

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_isissue )


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-тип на "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 на Mocbook / 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.