Come scorrere in tmux?


1295

Ho appena iniziato a usare tmux e mi piace molto, ma devo essere in grado di scorrere all'interno dei buffer / riquadri / finestre che ho aperto. Non mi interessa se funziona con il mouse o meno. Quando cerco la pagina man di tmux, trovo solo due istanze della parola "scroll" che compare anche ed entrambe hanno a che fare con la modalità copia. C'è un modo per scorrere senza tutto il sovraccarico di entrare in modalità copia?


8
Di quale sovraccarico ti preoccupi? copy-modeè il modo di visualizzare la cronologia (e facoltativamente copiarne dei contenuti).
Chris Johnsen,

2
per me puoi premere f7 per la modalità di scorrimento e q per uscire
John Merlino

7
set -g mode-mouse onla risposta di per @ chaiyachaiya è stata la migliore per me
Peter Berg,

Risposte:


1571

Ctrl- bquindi [è possibile utilizzare i normali tasti di navigazione per scorrere (ad es. Up Arrowo PgDn). Premere qper uscire dalla modalità di scorrimento.

In alternativa puoi premere Ctrl- b PgUpper accedere direttamente alla modalità di copia e scorrere di una pagina verso l'alto (che è quello che sembra che vorrai la maggior parte del tempo)

In vimodalità (vedi sotto), puoi anche scorrere la pagina su / giù riga per riga usando Shift- ke Shift- j(se sei già in modalità scorrimento). Non spostato, il cursore si sposta invece della pagina.

Estratti dalla pagina man :

tmux può essere controllato da un client collegato usando una combinazione di tasti di un tasto prefisso, 'C-b' (Ctrl-b) per impostazione predefinita, seguito da un tasto di comando.

 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

Più un mucchio di più. Si noti che è necessario premere C-bdue volte se si utilizza quello per pagina su poiché C-bè associato come tasto di comando. Vedere la pagina man per informazioni su come precedere un comando in modalità copia con un conteggio ripetuto.

È possibile impostare la modalità di associazione dei tasti utilizzando Ctrl- b, quindi

:set-window-option mode-keys emacs

oppure vi.


14
Penso che C-b =sia choose-bufferdi default. Intendevi C-b [(che è copy-modedi default)? Inoltre puoi anche usare C-b PageUpper avviare la modalità copia direttamente nella pagina precedente (molto utile quando sai che cosa vuoi vedere / copiare è già passato dalla pagina corrente).
Chris Johnsen,

4
Corretto, il mio tmux non ha modalità di scorrimento. È necessario C-b [accedere alla modalità di copia e quindi utilizzare i tasti di scelta rapida emacs o vi per scorrere. Sembrano molti passaggi solo per scorrere, ma i benefici di tmux superano ancora questi fastidi. Sono su un macbook e non esiste un tasto PageUp: - \. (Inoltre, come faccio a creare chiavi con markdown come hai fatto tu, Dennis?)
chadoh

44
@chadoh: prova questi sul tuo Macbook: Home: fn-LeftArrow; Fine: fn-RightArrow; Pagina su: fn-UpArrow; Pagina giù: fn-DownArrow. Per realizzare keycap:<kbd>Ctrl</kbd>
Dennis Williamson,

5
su macbook, fn + up va direttamente all'app terminal e non raggiunge mai tmux
Tyler,

15
Su un macbook se sei in modalità di scorrimento puoi usare fn + Maiusc + Freccia sinistra per scorrere verso l'alto una pagina.
Nick Hammond,

306

Bene, dovresti considerare il modo corretto di impostare lo scorrimento: aggiungi nel tuo tmux.conf

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

o

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

Ha funzionato per me in finestre e vetri. Ora tmux è semplicemente perfetto.

Pratico tmux ha maggiori informazioni sui file tmux.conf.


5
Quando lo faccio, clic e tocchi del mouse fanno sì che i caratteri incomprensibili vengano stampati nell'area di prompt del terminale che sto usando con tmux. Qualche idea?
ely

22
Utenti futuri di tmux mouse: per evitare di dover scorrere nuovamente verso il basso prima di digitare, puoi qpremere per uscire dalla modalità di scorrimento.
Jezen Thomas

15
Lo scorrimento del mouse funziona bene, ma sfortunatamente non posso più usare il mouse per selezionare il testo. Usando Tilda e tmux.
friederbluemle

27
Si noti che in tmux 2.1 e versioni successive, questo viene sostituito con set -g mouse one lo scorrimento non entra automaticamente nella modalità di copia come in precedenza.
thrnio,

25
Nota importante: questa impostazione interrompe l'evidenziazione e la copia del testo. Utilizzare MAIUSC + clic per mantenere questa funzionalità.
Shadoninja,

141

Dal mio .tmux.conf:

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

Ciò consente lo scorrimento nativo di xterm.


28
Puoi spiegare cosa fa esattamente?
Ivo,

11
Non so cosa faccia, ma è puro genio. Finalmente, lo scorrimento di tmux funziona, yay!
se stessi

5
Questo non funziona per me su OS X ...
Nick,


6
Dai un'occhiata se sei confuso sulla risposta di togdon: superuser.com/questions/310251/… IMO, se hai un solo riquadro, questa soluzione funziona meglio della risposta accettata.
Thameera,

57

Per il più recente tmux 2.1, per scorrere in modo sicuro con il mouse, questa è la risposta giusta:

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

non è sufficiente ricaricare il tuo .tmux.conf, è necessario riavviare tmux, ad es tmux kill-server && tmux

tratto da https://github.com/tmux/tmux/issues/145


1
In che modo questa non è la risposta accettata?
Marcel,

2
la nota in questa risposta sul "non essere abbastanza per ricaricare semplicemente .tmux.conf mi ha aiutato" ed uscire da tutte le sessioni di tmux per me (forse kill-server funzionerebbe) ha aiutato!
Colin D,

1
potresti approfondire come funziona?
Oligofren,

Sembra inoltrare gli eventi del mouse quando si fa clic / scorre il mouse / ecc. se il riquadro si trova in uno stato indiretto / buffer (solo in modalità copia?) e il mouse preme un pulsante, lo scorrimento, ecc. L'ultima parte copre lo scorrimento in modalità diretta passando prima a una modalità indiretta. Se non fosse per quei controlli, il terminale potrebbe interpretare gli eventi come lo scorrimento della cronologia, se non del tutto. Detto questo, non so se sono mai stato in grado di far scorrere correttamente il mio cercapersone e Vim allo stesso tempo, e ho provato un sacco di frammenti in giro.
John P

2
@chefarov - per un commento su un'altra risposta, puoi farlo tramite Shift+clickquando hai attivato la modalità mouse.
Brendan Moore,

14

Nel mio caso, solo opt+ UpArrowe opt+ DownArrowsu OSX.


@ fixer1234 La domanda non menziona affatto Linux. tmuxpuò essere utilizzato anche su OS X.
slhck,

@slhck: grazie. Troppo annebbiato; l'astigmatismo è iniziato. Avevo letto male il tag tmux come tag linux.
fixer1234,

11

Questo è il modo in cui l'ho fatto funzionare e i motivi per cui penso che sia meglio del modo predefinito.

Per provarlo, inserisci tutte le sezioni di codice ~/.tmux.conf.

Passaggio 1. Modificare la chiave del prefisso in modo da non dover raggiungere un bit. "B" è apparentemente un tasto vicino, ma è nel mezzo dei due indici (rispettivamente a "F" e "J"). Poiché questa scorciatoia è essenziale in tmux, Cj è molto meglio in quanto comporta il movimento della mano zero (oltre a premere il tasto).

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

Il passo 2. 'S' (per accedere alla modalità copia) è: 1) chiudi (stesso motivo come sopra), 2) coinvolge invece (confronta: 1-2 nella boxe o il lscomando per visualizzare i file in una directory ) e 3) potrebbero essere considerati mnemonici per "scroll" (sebbene la modalità copia non riguardi solo lo scorrimento).

bind s copy-mode

Passaggio 3. L'ultima parte, lo scorrimento effettivo. 'P' e 'N' sono familiari per questo scopo agli utenti di Emacs. Sono vicini, intuitivi ('P' è sopra 'N' sulla tastiera) e mnemonico ("precedente" e "successivo"). Se hai appena fatto un po 'di scrolling in Emacs, e poi vai su tmux, ha senso avere quelle scorciatoie.

Tuttavia, ho scoperto che "I" e "K" sono ancora migliori: sono persino più vicini di "P" e "N" e intuitivi (per lo stesso motivo); per quanto riguarda gli mnemonici - poiché lo scrolling è una cosa così comune da fare, gli mnemonici non contano davvero poiché le scorciatoie bypasseranno presto il tuo cervello ed entreranno nella memoria muscolare.

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

Ho cercato molto per questo e la migliore soluzione per me funziona come menzionato in questa guida dettagliata: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Aggiungi questi collegamenti 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

Con l'approccio sopra implementato, è possibile copiare anche dai riquadri in una finestra ingrandendo prima ogni riquadro usando Prefisso + .

Un dettaglio importante che mancava con la modalità mouse è premere Maiusc prima di selezionare un'area da copiare. Questo lo copierà nel buffer del terminale tradizionale anziché nel buffer di copia di tmux. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )


7

Consiglio di provare il plugin tmux-better-mouse-mode per risolvere la maggior parte dei problemi relativi al mouse tmux.

È compatibile con Tmux 2.1+ e il nuovo set-option -g mouse onapproccio.


1
Grazie, questa è la soluzione migliore per me. Copre tutti i miei attacchi con la rotellina del mouse che ho aggiunto manualmente (quindi non ne ho più bisogno), e ci sono due caratteristiche killer che desideravo moltissimo: scroll-without-changing-panein combinazione con scroll-without-changing-panee emulate-scroll-for-no-mouse-alternate-buffer. Ora la mia esperienza di utilizzo di tmux è molto, molto meglio.
selurvedu,

6

L'unica cosa che funziona per me è inserire quanto segue ~/.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"

(potrebbe essere necessario riavviare affinché questo abbia effetto)

Aggiornare:

Ho scoperto che se si modifica l'impostazione in Putty Connection> Dati> Tipo terminale in "putty" (utilizzato per correggere alcuni problemi di formattazione) da "xterm", questa soluzione smette di funzionare.

Aggiornamento 2:

Usalo se vuoi "stucco" come tipo di terminale: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


2
Questo in realtà risolve il mio problema di scorrimento anche nell'app per iPhone.
NathaneilCapital

L'ultima volta che ho provato questo non funzionava più, ma ha funzionato. Strano. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
phocks

4

Questo ha funzionato per me:

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

2
Dalla versione 2.1 (18 ottobre 2015) l'opzione dovrebbe essereset -g mouse on
naoko,

+1 per fornire effettivamente l'intero percorso del file di configurazione. La risposta di @ chaiyachaiya sarebbe perfetta altrimenti.
John McFarlane,

1

FWIW, su un macbook / OSX Mojave, dopo ctrl+[fare:

  • up arrow per la formazione
  • down arrow per linea verso il basso
  • fn + up arrow per pagina su
  • fn + down arrow per pagina giù
  • q per uscire dalla modalità di visualizzazione

0

L'unica cosa che ha funzionato per me è stata vim ~ / .tmux.conf set -g mode-mouse su ### Inserire questa impostazione con vim, quindi eseguire il sorgente del file. tmux source-file ~ / .tmux.conf


Potresti usare un po 'di formattazione per renderlo più chiaro? Usa il pulsante EDIT e poi guarda le opzioni disponibili nell'editor per aggiungere i formati utili.
music2myear il

-2
  • Ctrl+ A- per iniziare lo scorrimento
  • Ctrl+ C- per interrompere lo scorrimento

3
Questo post è troppo breve per rispondere in modo utile alla domanda. Aggiunge pochissime nuove informazioni alle risposte già pubblicate; non dice nulla su come scorrere (solo come cambiare dentro e fuori dalla modalità copia). Inoltre, la combinazione di tasti del prefisso del comando predefinito è Ctrl-B( Ctrl-Aè l'impostazione predefinita per la schermata GNU).
Anthony Geoghegan,

1
Non sono sicuro se l'autore di questa risposta abbia persino capito la domanda. È inutile e solo sbagliato.
Vik

2
Ho cercato come smettere di scorrere per così tanto tempo, grazie per averlo sottolineato!
PERR0_HUNTER,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.