Questão Role a saída do shell com o mouse no tmux
Rolagem do mouse não funciona em tmux a maneira como funciona quando eu executo o shell sem o tmux (no Gnome Terminal). Parece que o tmux envia eventos de rolagem do mouse como se eu tivesse pressionado as teclas Acima / Abaixo. Mas eu quero rolar embora o shell saída história. Existe uma maneira de fazer o tmux funcionar assim?
Nota: Eu sei como rolar com o teclado (graças a outra pergunta Aqui).
Eu tentei mouse rolando em duas versões do tmux:
222
2017-11-12 14:02
origem
Respostas:
Para rolar dentro do histórico da saída Você usaria ^b
+ [
Você pode então usar M + V para subir de página e ^ V para baixo. Eu não sei se você pode usar o real PgUp e PgDown Apesar. Meu terminal não envia essas chaves para o tmux. Em vez disso, ele se rola e não o histórico do tmux.
Para sair do modo de cópia, pressione ESC
Para usar o mouse neste modo (chamado modo de cópia), pressione ^b
+ :
e insira o seguinte:
setw -g mouse on
Nota: No tmux <2.1, a opção foi nomeada mode-mouse
, e não mouse
Agora, quando você mudar para o modo de cópia, você pode usar o mouse para percorrê-lo.
Você pode colocar este comando no seu ~ / .tmux.conf se você quiser que ele carregue toda vez que você executar o tmux.
Atualizar: A partir do tmux 1.5, esta opção faz com que o uso da roda de rolagem automaticamente mude para o modo de cópia e role de volta o buffer de rolagem do tmux. Não é necessário primeiro acertar Ctrl-B
+ [
não mais. Rolando de volta para o prompt também finaliza o modo de cópia automaticamente.
206
2017-12-01 18:48
Existem algumas mudanças para o Tmux 2.1
O modo de mouse foi reescrito. Não há mais opções para:
- mouse-redimensionar-painel
- mouse-selecione-painel
- janela de seleção de mouse
- modo-mouse
Em vez disso, há apenas uma opção: 'mouse' que ativa o suporte do mouse
inteiramente.
Isso seria
set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
111
2017-10-19 11:02
A versão atual do tmux (1.5) permite que você simplesmente configure a opção mode-mouse e permite que você role com a roda do mouse.
mode-mouse [on | off]
Mouse state in modes. If on, the mouse may be used to
enter copy mode and copy a selection by dragging, to
enter copy mode and scroll with the mouse wheel, or to
select an option in choice mode.
No meu arquivo .tmux.conf:
set-window-option -g mode-mouse on
61
2017-11-15 20:05
Tente isso no seu .tmux.conf
# Make mouse useful in copy mode
setw -g mode-mouse on
# Allow mouse to select which pane to use
set -g mouse-select-pane on
# 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"
# Scroll History
set -g history-limit 30000
# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on
# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50
Tirado de http://brainscraps.wikia.com/wiki/Extreme_Multitasking_with_tmux_and_PuTTY
51
2017-10-24 16:55
Alguém (de uma fonte que eu perdi) sugeriu adicionar o seguinte para ~.tmux.conf
:
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
Não tenho ideia de como funciona ou o que faz, mas isso agora me permite rolar com a roda do mouse dentro de uma sessão do tmux sem ter que entrar no modo de cópia do tmux; Eu apenas rodo a roda e BAM! funciona. Note que estou usando o terminal.app, mas lembro que o OP deu a resposta especificamente para uso com gnome-terminal
.
14
2018-06-22 17:10
tmux 2.1 introduz novas ligações de mouse.
Eu escrevi estas ligações agora mesmo hoje. Ele liga perfeitamente a roda do mouse às setas quando não está no Vim, porque o Vim é capaz de interpretar os códigos brutos do mouse (para escolher qual janela do Vim percorrer para você dependendo de qual o mouse acabou).
Isso significa que podemos finalmente usar o mouse apenas para visualizar várias páginas de manual e qualquer outra coisa que aceite teclas de seta. Você pode estender e encadear o if
lógica conforme necessário para implementar mais lógica para seus aplicativos.
bind -n WheelUpPane if "[[ #{pane_current_command} =~ vim ]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Up"
bind -n WheelDownPane if "[[ #{pane_current_command} =~ vim ]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Down"
Com essa nova capacidade de ligação de roda, é possível fazer o script da roda do mouse para fazer qualquer comportamento sensível ao contexto de que você goste.
5
2017-12-15 23:44
O Gnome-terminal faz alguns truques para traduzir os eventos de rolagem do mouse para as teclas de seta para cima e para baixo em condições de rolagem "usual" restrita. Por exemplo, quando você visualiza algum texto usando less
(isso acontece em particular quando você está lendo um homem), você pode rolar o conteúdo usando j
, k
e as teclas de seta. Mas Além dissocom gnome-terminal
, você pode fazer isso com a rolagem do mouse, graças ao truque mencionado.
Então eu acho tmux
faz alguma "captura" do terminal como less
- e o mesmo mecanismo em gnome-terminal
chutes: a rolagem do mouse se traduz em teclas de seta para cima / para baixo.
Você pode desativar esse recurso nas configurações de perfil e obter a rolagem normal em qualquer circunstância. Apenas desmarque a última caixa de seleção na guia "rolagem":
.
3
2017-12-07 07:03
https://github.com/NHDaly/tmux-better-mouse-mode
Implementação configurável e rica em recursos do controle do mouse para novos tmuxes. altamente recomendado.
Você provavelmente quer usar
set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"
com isso também.
0
2018-01-02 23:48
Você pode combinar as ideias de ligação das outras respostas para obter um comportamento de rolagem satisfatório:
trabalha no vim
muda para o modo de cópia automaticamente no terminal e sai quando você alcança o fundo
ainda permite que você use o mousewheel em man, less e journalctl.
Meu código:
bind -n WheelUpPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Up Up Up Up" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"
bind -n WheelDownPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Down Down Down Down" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"
você pode adicionar outros comandos que exigem teclas de seta para rolagem na parte grep -e 'man'
Eu adicionei as send-keys várias vezes, então um tick na roda do mouse rolará 4 linhas de cada vez
0
2018-02-12 23:02