2010-11-12 14:02:16 +0000 2010-11-12 14:02:16 +0000
271
271

Saída da concha de rolagem com o rato em tmux

A rolagem do rato não funciona em tmux a forma como funciona quando corro shell sem tmux (no Terminal Gnome). Parece que o tmux envia eventos de rolagem do rato como se eu tivesse premido as teclas Para cima/para baixo. Mas eu quero que role através do histórico da shell output. Haverá uma forma de fazer o tmux funcionar assim?

Nota: Sei como rolar com o teclado (graças a outra pergunta aqui).

Tentei rolar com o rato em duas versões do tmux:

Respostas (10)

264
264
264
2010-12-01 18:48:45 +0000

Para percorrer dentro da história da saída Usaria ^b + [ Pode então usar M+V para paginar para cima e ^V para paginar para baixo. No entanto, não sei se pode usar o verdadeiro PgUp e PgDown. O meu terminal não envia estas chaves para o tmux. Em vez disso, ele próprio se desloca e não a história do tmux.

Para sair do modo de cópia, prima ESC

Para usar o seu rato neste modo (chamado modo de cópia) prima ^b + : e introduza o seguinte:

setw -g mouse on

Nota: No tmux \i1, a opção foi denominada mode-mouse, e não mouse

Agora quando mudar para o modo de cópia pode usar o seu rato para se deslocar através dele. Pode colocar este comando no seu ~/.tmux.conf se assim o quiser carregar sempre que executar o tmux.

Update: A partir do tmux 1.5, esta opção faz com que a roda de rolagem mude automaticamente para o modo de cópia e volte a rolar o buffer de scrollback do tmux. Já não é necessário carregar primeiro em Ctrl-B + [. A rolagem de volta para o modo de cópia também termina automaticamente.

127
127
127
2015-10-19 11:02:01 +0000

Há algumas alterações para o Tmux 2.1

  • O modo do rato foi reescrito. Já não há mais opções para:

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'"
64
64
64
2011-11-15 20:05:50 +0000

A versão actual do tmux (1.5) permite-lhe simplesmente activar a opção mode-mouse, e permite-lhe percorrer com a roda do rato.

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 .tmux.conf:

set-window-option -g mode-mouse on
59
59
59
2012-10-24 16:55:07 +0000

Experimente isto 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_withtmux_andPuTTTY

16
16
16
2011-06-22 17:10:05 +0000

Alguém (de uma fonte que perdi) sugeriu acrescentar o seguinte a ~.tmux.conf:

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

Não faço ideia de como funciona ou do que faz, mas isto agora permite-me rolar com a roda do rato dentro de uma sessão de tmux sem ter de entrar no modo de cópia do tmux; eu apenas rolo a roda e o BAM! funciona. Note-se que estou a usar terminal.app, mas lembro-me que o OP deu a resposta especificamente para uso com gnome-terminal.

5
5
5
2015-12-15 23:44:29 +0000

tmux 2.1 introduz novas ligações para o rato.

Escrevi estas ligaduras ainda hoje. Liga perfeitamente a roda do rato a setas quando não está em Vim, porque Vim é capaz de interpretar os códigos em bruto da roda do rato (para fins como escolher qual a janela de Vim a percorrer para si, dependendo de qual o seu rato está em cima).

Isto significa que podemos finalmente usar o rato apenas para ver várias páginas de homem e o que quer que seja que aceite mais teclas de setas. Pode estender e encadear a lógica if conforme necessário para implementar mais lógica para as suas aplicações.

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 esta nova capacidade de encadernação da roda, é possível escrever a roda do rato para fazer qualquer comportamento sensível ao contexto que desejar.

5
5
5
2019-04-23 15:29:55 +0000

Se já estiver numa sessão tmux pode executar o comando

set mouse on

Lembrete: para executar comandos, use o seu prefixo e depois :.

3
3
3
2010-12-07 07:03:31 +0000

Gnome-terminal faz alguns truques limpos traduzindo eventos de scroll do rato para cima e para baixo em condições de rolagem restrita “habitual”. Por exemplo, quando vê algum texto usando less (isto acontece em particular quando está a ler um homem), pode percorrer o conteúdo usando as teclas de j, k, e as setas. Mas também, com gnome-terminal, pode fazer isso com a rolagem do rato, graças ao truque mencionado. , , por isso acho que tmux faz alguma “captura” do terminal tal como less - e o mesmo mecanismo em gnome-terminal faz o mesmo: a rolagem do rato traduz-se em Para cima/Para baixo pressiona as teclas de seta.

Pode desligar esta funcionalidade em definições de perfil e obter a rolagem regular em quaisquer circunstâncias. Basta desmarcar a última caixa de verificação no separador “scrolling”:

.

1
1
1
2018-01-02 23:48:52 +0000

https://github.com/NHDaly/tmux-better-mouse-mode

Implementação configurável e rica em características do controlo do rato para tmuxes mais recentes. altamente recomendado.

É provável que queira utilizar

set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"

com ele também.

0
0
0
2018-02-12 23:02:10 +0000

Pode combinar as ideias de encadernação das outras respostas para obter um comportamento de rolagem bastante satisfatório: trabalha em vim muda para o modo de cópia automaticamente em terminal e sai quando chega ao fundo ainda lhe permite usar a roda do rato no homem, menos e jornalctl.

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

pode adicionar outros comandos que requerem teclas de setas para rolar no grep -e parte ‘man’

i adicionou as teclas de envio várias vezes, por isso um tick na roda do rato irá rolar 4 linhas de cada vez