Jak przewijać w tmux?


1292

Właśnie zacząłem używać tmux i bardzo mi się podoba, ale muszę mieć możliwość przewijania w buforach / oknach / oknach, które mam otwarte. Nie obchodzi mnie, czy to działa z myszą, czy nie. Kiedy przeszukuję stronę podręcznika tmux, widzę tylko dwa wystąpienia słowa „przewiń”, które się nawet pokazują, i oba mają związek z trybem kopiowania. Czy istnieje sposób na przewijanie bez całego nakładu związanego z wejściem w tryb kopiowania?


8
Jakie są koszty ogólne? copy-modeto sposób przeglądania historii (i opcjonalnie kopiowania z niej rzeczy).
— Chris Johnsen,

2
dla mnie możesz nacisnąć f7, aby przejść do trybu przewijania i q, aby wyjść
— JohnMerlino,

7
set -g mode-mouse onOdpowiedź per @ chaiyachaiya była dla mnie zwycięzcą
— Peter Berg

Odpowiedzi:


1567

Ctrl- bwtedy [możesz używać normalnych klawiszy nawigacyjnych do przewijania (np. Up Arrowlub PgDn). Naciśnij, qaby wyjść z trybu przewijania.

Możesz też nacisnąć przycisk Ctrl-, b PgUpaby przejść bezpośrednio do trybu kopiowania i przewinąć o jedną stronę w górę (tak to wygląda na większość czasu)

W vitrybie (patrz poniżej) możesz także przewijać stronę w górę / w dół linia po linii za pomocą Shift- ki Shift- j(jeśli jesteś już w trybie przewijania). Nie przesunięty kursor przesuwa się zamiast strony.

Fragmenty strony man :

tmux może być kontrolowany z podłączonego klienta za pomocą domyślnej kombinacji klucza prefiksu, „C-b” (Ctrl-b), a następnie klawisza polecenia.

 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

Plus kilka innych. Pamiętaj, że musisz nacisnąć C-bdwa razy, jeśli używasz go do przewijania strony w górę, ponieważ C-bjest on związany jako klawisz polecenia. Zobacz stronę podręcznika, aby uzyskać informacje na temat zastępowania polecenia trybu kopiowania powtórzeniem.

Możesz ustawić tryb przypisywania klawiszy za pomocą Ctrl- b, a następnie

:set-window-option mode-keys emacs

lub vi.


14
Myślę, że C-b =jest choose-bufferdomyślnie. Miałeś na myśli C-b [(który jest copy-modedomyślnie)? Możesz także użyć C-b PageUpdo uruchomienia trybu kopiowania bezpośrednio na poprzedniej stronie (bardzo przydatne, gdy wiesz, że to, co chcesz wyświetlić / skopiować, przewinęło już bieżącą stronę).
— Chris Johnsen,

4
Prawidłowo, mój tmux nie ma trybu przewijania. Musisz przejść C-b [do trybu kopiowania, a następnie przewijać klawisze emacs lub vi. Wydaje się, że to tylko kilka kroków do przewinięcia, ale zalety tmux wciąż przewyższają te irytacje. Jestem na komputerze Macbook i nie ma klucza PageUp: - \. (Poza tym, jak zrobić klucze ze zniżką, tak jak ty, Dennis?)
— Chadoh

44
@chadoh: Wypróbuj je na komputerze Macbook: Home: fn-LeftArrow; Koniec: fn-RightArrow; Page Up: fn-UpArrow; Strona w dół: fn-DownArrow. Aby wykonać klawisze:<kbd>Ctrl</kbd>
— Dennis Williamson,

5
na Macbooku fn + up przechodzi bezpośrednio do aplikacji terminalowej i nigdy nie uderza w Tmux
— Tyler

15
Na MacBooku, jeśli jesteś w trybie przewijania, możesz użyć klawiszy Fn + Shift + Strzałka w lewo, aby przewinąć stronę w górę.
— Nick Hammond

306

Cóż, powinieneś rozważyć właściwy sposób ustawiania przewijania: dodaj swój tmux.conf

set -g mouse on        #For tmux version 2.1 and up

lub

set -g mode-mouse on   #For tmux versions < 2.1

Działa dla mnie w oknach i oknach. Teraz tmux jest po prostu idealny.

Praktyczny tmux ma więcej informacji na temat plików tmux.conf.


5
Kiedy to robię, kliknięcia i przewijanie myszą powodują, że bełkotliwe znaki są drukowane w wierszu polecenia terminala, którego używam z tmux. Jakieś pomysły?
— ely

22
Przyszli użytkownicy myszy tmux: Aby uniknąć konieczności ponownego przewijania w dół przed pisaniem, możesz nacisnąć przycisk, qaby wyjść z trybu przewijania.
— Jezen Thomas

15
Przewijanie myszką działa dobrze, ale niestety nie mogę już używać myszy do zaznaczania tekstu. Korzystanie z Tilda i tmux.
— friederbluemle

27
Zauważ, że w wersji tmux 2.1 i nowszych jest to zastąpione set -g mouse on, a przewijanie nie wchodzi automatycznie w tryb kopiowania, jak to miało miejsce wcześniej.
— trzynio

25
Ważna uwaga: To ustawienie przerywa podświetlanie i kopiowanie tekstu. Użyj Shift + kliknij, aby zachować tę funkcjonalność.
— Shadoninja

141

Z mojego .tmux.conf:

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

Umożliwia to natywne przewijanie Xterm.


28
Czy możesz wyjaśnić, co to dokładnie robi?
— Ivo

11
Nie wiem, co to robi, ale jest to genialny geniusz. Wreszcie, przewijanie tmux działa, tak!
— siebie

5
To nie działa dla mnie na OS X ...
— Nick

17
Rozwiązanie: gist.github.com/1297707
— Nick

6
Sprawdź to, jeśli masz wątpliwości co do odpowiedzi togdona: superuser.com/questions/310251/… IMO, jeśli masz tylko jeden panel, to rozwiązanie działa lepiej niż zaakceptowana odpowiedź.
— thameera 16.04.13

57

W przypadku najnowszego tmux 2.1, aby przewijać myszą zdrowo, jest to właściwa odpowiedź:

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'"

nie wystarczy po prostu ponownie załadować .tmux.conf, musisz ponownie uruchomić tmux, np tmux kill-server && tmux

zaczerpnięte z https://github.com/tmux/tmux/issues/145


1
Jak to nie jest akceptowana odpowiedź?
— Marcel

2
pomogła uwaga w tej odpowiedzi na temat „nie wystarczy, by po prostu ponownie załadować .tmux.conf” i wyjście dla mnie ze wszystkich sesji tmux (może zadziałałby kill-server)!
— Colin D

1
czy mógłbyś wyjaśnić, jak to działa?
— oligofren,

Wygląda na to, że przesyła zdarzenia myszy po kliknięciu / przewinięciu myszy itp. jeśli panel jest w jakimkolwiek stanie pośrednim / buforowanym (tylko tryb kopiowania?), a mysz naciska przycisk, przewija itp. Ostatnia część obejmuje przewijanie w trybie bezpośrednim poprzez przełączenie najpierw na tryb pośredni. Jeśli nie dla tych elementów sterujących, terminal może interpretować zdarzenia jako przewijanie historii, jeśli w ogóle. Powiedziawszy to, nie wiem, czy kiedykolwiek udało mi się sprawić, aby mój pager i Vim przewijały się jednocześnie, i próbowałem obejść kilka fragmentów.
— John P

2
@chefarov - w komentarzu do innej odpowiedzi możesz to zrobić, Shift+clickgdy masz włączony tryb myszy.
— Brendan Moore

14

W moim przypadku po prostu opt+ UpArrowi opt+ DownArroww OSX.


@ fixer1234 Pytanie w ogóle nie wspomina o Linuksie. tmuxmoże być również używany w systemie OS X.
— slhck

@slhck: Dzięki. Zbyt niewyraźne oczy; rozpoczął się astygmatyzm. Źle odczytałem tag tmux jako tag linux.
— fixer1234 17.04.15

11

W ten sposób sprawiłem, że działało, i powody, dla których uważam, że jest lepszy niż domyślny.

Aby to wypróbować, wstaw wszystkie sekcje kodu ~/.tmux.conf.

Krok 1. Zmień klucz prefiksu, abyś nie musiał sięgać ani jednego bitu. „B” jest pozornie bliskim klawiszem, ale znajduje się pośrodku dwóch palców wskazujących (odpowiednio w „F” i „J”). Ponieważ ten skrót jest niezbędny w tmux, Cj jest znacznie lepszy, ponieważ wymaga zerowego ruchu ręki (oprócz naciśnięcia klawisza).

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

Krok 2. „S” (aby wejść w tryb kopiowania) to: 1) zamknij (z tego samego powodu co powyżej), 2) dotyczy drugiej ręki (porównaj: 1-2 w boksie lub lspolecenie przeglądania plików w katalogu ) i 3) można uznać za mnemoniczny dla „przewijania” (chociaż tryb kopiowania nie polega tylko na przewijaniu).

bind s copy-mode

Krok 3. Ostatnia część, rzeczywiste przewijanie. „P” i „N” są znane w tym celu użytkownikom Emacsa. Są bliskie, intuicyjne („P” jest powyżej „N” na klawiaturze) i mnemoniczne („poprzednie” i „następne”). Jeśli po prostu wykonałeś przewijanie w Emacsie, a następnie przejdziesz do tmux, sensowne jest posiadanie tych skrótów.

Odkryłem jednak, że „I” i „K” są jeszcze lepsze - są nawet bliższe niż „P” i „N” oraz intuicyjne (z tego samego powodu); jeśli chodzi o mnemoniki - ponieważ przewijanie jest tak powszechną rzeczą, mnemoniki tak naprawdę nie mają znaczenia, ponieważ skróty wkrótce ominą twój mózg i wejdą w pamięć mięśni.

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

Dużo szukałem tego i najlepsze rozwiązanie dla mnie działa, jak wspomniano w tym szczegółowym przewodniku: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Dodaj te wiązania w ~ / .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

Po wdrożeniu powyższego podejścia możesz również kopiować z paneli w oknie, najpierw powiększając każdy panel za pomocą Prefiksu + .

Jednym ważnym szczegółem, którego brakowało w trybie myszy, jest naciśnięcie Shift przed wybraniem obszaru do skopiowania. Spowoduje to skopiowanie go do tradycyjnego bufora terminala zamiast bufora kopiowania tmux. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )


7

Polecam wypróbowanie wtyczki trybu tmux-better-mouse, aby rozwiązać większość problemów związanych z myszą tmux.

Jest kompatybilny z Tmux 2.1+ i nowym set-option -g mouse onpodejściem.


1
Dzięki, to dla mnie najlepsze rozwiązanie. Obejmuje wszystkie moje wiązania kółka myszy, które dodałem ręcznie (więc już ich nie potrzebuję), i są dwie cechy zabójcy, których bardzo chciałem: scroll-without-changing-panew połączeniu z scroll-without-changing-panei emulate-scroll-for-no-mouse-alternate-buffer. Teraz moje korzystanie z Tmux jest znacznie lepsze.
— selurvedu

6

Jedyną rzeczą, która działa dla mnie, jest umieszczenie następujących ~/.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"

(może być konieczne ponowne uruchomienie komputera, aby to zadziałało)

Aktualizacja:

Odkryłem, że jeśli zmienisz ustawienie w Putty Connection> Data> Terminal-type na „putty” (służy do naprawy niektórych problemów z formatowaniem) z „xterm”, to rozwiązanie przestanie działać.

Aktualizacja 2:

Użyj tego, jeśli chcesz „kit” jako typ terminala: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


2
Ten rozwiązuje również mój problem z przewijaniem w aplikacji na iPhone'a.
— NathaneilCapital

Ostatnio próbowałem tego nie działało, ale to działało. Dziwne. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
— udaje się

4

To działało dla mnie:

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

2
Od wersji 2.1 (18 października 2015 r.) set -g mouse on
— Tą

+1 za podanie pełnej ścieżki pliku konfiguracyjnego. W przeciwnym razie odpowiedź @ chaiyachaiya byłaby idealna.
— John McFarlane

1

FWIW, na Macbooku / OSX Mojave, po ctrl+[:

  • up arrow dla składu
  • down arrow dla linii w dół
  • fn + up arrow na stronę w górę
  • fn + down arrow na stronę w dół
  • q, aby wyjść z trybu przeglądania

0

Jedyną rzeczą, która działała dla mnie, był vim ~ / .tmux.conf set -g mode-mouse na ### Wstaw to ustawienie za pomocą vim, a następnie źródłowy plik. Plik źródłowy tmux ~ / .tmux.conf


Czy możesz użyć formatowania, aby to wyjaśnić? Użyj przycisku EDYCJA, a następnie spójrz na opcje dostępne w edytorze, aby dodać pomocne formaty.
— music2myear

-2
  • Ctrl+ A- aby rozpocząć przewijanie
  • Ctrl+ C- aby zatrzymać przewijanie

3
Ten post jest zbyt krótki, aby można było na niego skutecznie odpowiedzieć na pytanie. Dodaje bardzo niewiele nowych informacji do już opublikowanych odpowiedzi; nie mówi nic o tym, jak przewijać (tylko jak zmieniać tryb kopiowania i poza nim). Domyślna kombinacja klawiszy prefiksu poleceń to Ctrl-B( Ctrl-Ajest domyślna dla ekranu GNU).
— Anthony Geoghegan

1
Nie jestem pewien, czy autor tej odpowiedzi w ogóle zrozumiał pytanie. To jest nieprzydatne i po prostu złe.
— Vik

2
Tak długo szukałem sposobu na zatrzymanie przewijania, dziękuję za zwrócenie na to uwagi!
— PERR0_HUNTER
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.