Questão Como faço para rolar no tmux?


Acabei de começar a usar o tmux, e eu realmente gosto dele, mas eu preciso ser capaz de rolar dentro dos buffers / painéis / janelas que eu abri. Eu não me importo se funciona com o mouse ou não. Quando eu pesquiso a man page do tmux, encontro apenas duas instâncias da palavra "scroll" aparecendo, e ambas têm a ver com o modo de cópia. Existe uma maneira de rolar sem toda a sobrecarga de entrar no modo de cópia?


1058


origem


Com que sobrecarga você está preocupado? copy-mode é a maneira de ver o histórico (e opcionalmente copiar coisas dele). - Chris Johnsen
para mim, você pode pressionar f7 para o modo de rolagem e q para sair - JohnMerlino
set -g mode-mouse on resposta de per @ chaiyachaiya foi o vencedor para mim - Peter Berg


Respostas:


Ctrl-b então [ então você pode usar suas teclas de navegação normais para rolar (por exemplo. Seta para cima ou PgDn). pressione q para sair do modo de rolagem.

Alternativamente, você pode pressionar Ctrl-b  PgUp para ir diretamente para o modo de cópia e rolar uma página para cima (que é o que parece que você vai querer na maioria das vezes)

Dentro vi modo (veja abaixo), você também pode rolar linha para cima / baixo linha por Mudança-k e Mudança-j (se você já estiver no modo de rolagem). Unshifted, o cursor se move em vez da página.

Trechos do página man:

O tmux pode ser controlado a partir de um cliente conectado usando uma combinação de teclas de uma tecla de prefixo, "C-b" (Ctrl-b) por padrão, seguida por uma tecla de 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

Mais um monte mais. Note que você tem que pressionar C-b duas vezes se você usar isso para page up desde C-b está ligado como a chave de comando. Veja a página do manual para obter informações sobre como iniciar um comando do modo de cópia com uma contagem de repetição.

Você pode definir o modo de ligação de teclas usando Ctrl-b, então

:set-window-option mode-keys emacs

ou vi.


1292



eu acho que C-b = é choose-buffer por padrão. Você quis dizer C-b [ (qual é copy-mode por padrão)? Também você também pode usar C-b PageUp para iniciar o modo de cópia diretamente na página anterior (muito útil quando você sabe o que deseja ver / copiar já rolou para fora da página atual). - Chris Johnsen
Correto, meu tmux não tem modo de rolagem. Você precisa C-b [ para entrar no modo de cópia e, em seguida, use os enlaces de teclas emacs ou vi para percorrer. Este parece ser um monte de passos apenas para rolar, mas os benefícios do tmux ainda superam esses aborrecimentos. Eu estou em um macbook e não há chave PageUp: - \. (Além disso, como faço chaves com markdown como você fez, Dennis?) - chadoh
@chadoh: Tente estes no seu Macbook: Home: fn-LeftArrow; Fim: fn-RightArrow; Page Up: fn-UpArrow; Page Down: fn-DownArrow. Para fazer keycaps: <kbd>Ctrl</kbd> - Dennis Williamson
no macbook, o fn + up vai direto para o terminal app e nunca bate no tmux - Tyler
Em um macbook, se você estiver no modo de rolagem, poderá usar fn + Shift + LeftArrow para percorrer uma página. - Nick Hammond


Bem, você deve considerar a maneira correta de definir a rolagem: adicione em seu tmux.conf

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

ou

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

Funcionou para mim em janelas e painéis. Agora o tmux é simplesmente perfeito.

TMux prático tem mais informações sobre arquivos tmux.conf.


236



Quando faço isso, cliques e rolagens do mouse fazem com que caracteres sem sentido sejam impressos na área de prompt do terminal que estou usando com o tmux. Alguma ideia? - ely
Usuários futuros de mouse tmux: Para evitar que você tenha que rolar para o fundo novamente antes de digitar, você pode bater q para sair do modo de rolagem. - Jezen Thomas
A rolagem do mouse funciona bem com isso, mas infelizmente não consigo mais usar o mouse para selecionar o texto. Usando Tilda e tmux. - friederbluemle
Note que no tmux 2.1 e acima, este é substituído por set -g mouse one a rolagem não entra automaticamente no modo de cópia como antes. - thrnio
Nota importante: Esta configuração quebra o realce e a cópia do texto. Use shift + click para manter essa funcionalidade. - Shadoninja


Do meu arquivo .tmux.conf:

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

Isso permite a rolagem xterm nativa.


125



Você pode explicar o que isso faz exatamente? - Ivo
Eu não sei o que isso faz, mas é puro gênio. Finalmente, a rolagem do tmux funciona, yay! - oneself
Isso não funciona para mim no OS X ... - Nick
Solução: gist.github.com/1297707 - Nick
Verifique isto se você estiver confuso sobre a resposta de togdon: superuser.com/questions/310251/…   IMO, se você tiver apenas um único painel, essa solução funcionará melhor do que a resposta aceita. - thameera


Para o mais novo tmux 2.1, para rolar com o mouse, esta é a resposta certa:

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

não é suficiente apenas recarregar o seu arquivo .tmux.conf você precisa reiniciar o seu tmux, por ex. tmux kill-server && tmux

Tirado de https://github.com/tmux/tmux/issues/145


39



Como esta não é a resposta aceita? - Marcel
a nota nesta resposta sobre "não ser suficiente para simplesmente recarregar o .tmux.conf ajudou" e sair de todas as sessões do tmux para mim (talvez o kill-server funcionaria) ajudou! - Colin D
você poderia elaborar sobre como isso funciona? - oligofren
Parece para encaminhar eventos do mouse quando o mouse é clicado / rolado / etc. se o painel estiver em qualquer estado indireto / buffered (apenas modo de cópia?), e o mouse estiver pressionando um botão, rolando, etc. A última parte abrange a rolagem no modo direto alternando para um modo indireto primeiro. Se não fosse por esses controles, o terminal poderia interpretar os eventos como rolagem do histórico, se fosse o caso. Com isso dito, eu não sei se já consegui fazer com que meu pager e o Vim rolem corretamente ao mesmo tempo, e eu tentei um monte de trechos por aí. - John P


No meu caso, apenas optar + UpArrow e optar + Seta para baixo no OSX.


12



@ fixer1234 A questão não menciona o Linux. tmux pode ser usado no OS X também. - slhck
@slhck: Obrigado. De olhos muito turvos; astigmatismo chutou pol Eu tinha interpretado mal a tag tmux como uma tag linux. - fixer1234


Esta é a maneira que eu fiz o trabalho, e as razões pelas quais eu acho que é melhor do que o modo padrão.

Para experimentá-lo, coloque todas as seções do código em ~/.tmux.conf.

Etapa 1. Altere a chave de prefixo para que você não tenha que alcançar um bit. 'B' é aparentemente uma chave próxima, mas está no meio dos dois dedos indicadores (em 'F' e 'J', respectivamente). Como esse atalho é essencial no tmux, o C-j é muito melhor, pois envolve o movimento da mão zero (além de pressionar a tecla).

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

Passo 2. 'S' (para entrar no modo de cópia) é: 1) fechar (mesmo motivo acima), 2) envolve a outra mão (comparar: o 1-2 no boxe, ou o ls comando para visualizar arquivos em um diretório), e 3) poderia ser considerado como mnemônico para "scroll" (embora o modo de cópia não seja apenas sobre rolagem).

bind s copy-mode

Etapa 3. A última parte, a rolagem real. 'P' e 'N' são familiares para este propósito aos usuários do Emacs. Eles são próximos, intuitivos ('P' está acima de 'N' no teclado) e mnemônico ("anterior" e "próximo"). Se você acabou de fazer alguma rolagem no Emacs, e então vai para o tmux, faz sentido ter esses atalhos.

No entanto, descobri que 'eu' e 'K' são ainda melhores - eles são ainda mais próximos do que 'P' e 'N', e intuitivos (pelo mesmo motivo); quanto à mnemônica - como a rolagem é uma coisa tão comum de se fazer, a mnemônica não será realmente importante, pois os atalhos logo passarão por seu cérebro e entrarão na memória muscular.

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

10





Eu procurei muito por isso e a melhor solução para mim funciona como mencionado neste guia detalhado: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Adicione estas ligações em ~ / .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

Com a abordagem acima implementada, você pode copiar de painéis em uma janela também zoom em cada painel primeiro usando Prefixo  +.

Um detalhe importante que estava faltando com o modo de mouse é pressionar Mudança antes de selecionar uma área para copiar. Isso irá copiá-lo para o buffer de terminal tradicional em vez do buffer de cópia do tmux. (https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues)


6



Aprecie sua resposta. Mas muitas vezes os links referidos podem quebrar. Seria sempre benéfico adicionar a parte central de sua resposta aqui e fornecer o link apenas para referência. - Prasanna