Resumo

Resumo

Estou usando uma combinação de PuTTY, tmux e vim. Se eu apenas abrir uma conexão SSH com o PuTTY e depois abrir o vim, a rolagem do mouse funcionará conforme o esperado. Mas se eu abrir o tmux e depois abrir o vim dentro do tmux, a rolagem funciona apenas parcialmente, o que significa que posso rolar para baixo como de costume, mas não consigo rolar para cima. Se eu rolar para cima, o buffer apenas balança "para cima e para baixo" e permanece no mesmo lugar. "set -g mode-mouse on" não parece fazer diferença (eu recarrego o conf depois com "tmux source-file ~/.tmux.conf"), funciona da mesma maneira de qualquer maneira.

Editar: também notei que a rolagem funciona como esperado no tmux no terminal, mas não no vim. Somente as opções relacionadas ao mouse/terminal que tenho no vim são "set mouse=a" e "set t_Co=256".

Alguma ideia?

Responder1

Resumo

O problema começa claramente com o PuTTY, mas não para necessariamente aí. Abaixo há um link para uma solução potencial para o problema do PuTTY, bem como uma análise do problema como um todo.


descrição do problema

Configuração

vimcom mouse=ahabilitado para rolagem, seleção e movimento do cursor

tmux, sem tmuxfuncionalidade de mouse ativada, ou seja, o seguinte:

set -g mode-mouse off
set -g mouse-select-pane off
set -g mouse-resize-pane off
set -g mouse-select-window off

Caso de uso

Um caso de uso típico é usarvim dentrode tmux. Evitar interações negativas entre tmuxe vimé um dos principais motivos para desativar tmuxa rolagem.

Comportamento

Observe que o seguinte ocorre apenas ao usar PuTTY como emulador de terminal e não é reproduzível no gnome-terminal ou em qualquer outro emulador de terminal Linux testado.

Ao tentar 'rolar para cima' usando o mouse emvim dentrode uma tmuxsessão, a ação simplesmente falha. Como o OP descreve, muitas vezes é possível ver o buffer balançando para cima e para baixo, como se houvesse uma contra-ação ocorrendo a cada tentativa de rolagem (mais sobre isso abaixo).

Isso é basicamente igual à descrição do OP, mas recapitulado para o caso de algo não estar claro na minha explicação ou na pergunta do OP.


Solução potencial – PuTTY

Parece haver um problema em que o PuTTY envia um evento ScrollDown estranho com cada evento ScrollDown/ScrollUp. Isso significa que cada tentativa de rolar para cima é cancelada e nada acontece. Por outro lado, ao rolar para baixo, cada evento de rolagem é duplicado. O comportamento é fácil de validar observando o vimcomportamento de rolagemprimeiro forade tmux(onde a rolagem funciona corretamente) esegundo dentrode tmux(onde a rolagem para cima não funciona e uma única tentativa de rolar para baixo rola o dobro).

De acordo com o seguinte tópico gmane, o problema descrito acima foi resolvido com um patch do Putty-X (https://github.com/atsepkov/putty-X/commit/bbcedf5a85ca1ccaa27005e7f7ebeb4c8a783b88):

Link para o tópico do gmane:http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/5498.

OBSERVAÇÃO:Eu não validei a solução acima, então revise o tópico gmane para obter informações adicionais.


Observações Adicionais

OnderealmenteO que fica interessante é que este é um problema novo que não pode ser reproduzido usando versões mais antigas de tmux/ vim. Usando a mesma versão do PuTTY (0.63), o problema pode ser demonstrado ativamente em um sistema Ubuntu 13.10, enquanto um sistema Ubuntu 12.04 não apresenta o problema.

A princípio, o problema parece apontar para um delta de configuração do sistema (ou seja, falta de ncurses-term ou similar), mas nenhuma correção foi identificada usando este tipo de solução. Além disso, os vários relatórios sobre o mesmo problema (incluindo este tópico) tendem a apoiar a existência do problema.

Devido à natureza co-dependente do problema e das versões do software relacionado, parece que o problema não está limitado a um único aplicativo. Pode ser que uma versão mais recente de tmux/ vimtenha 'consertado' algo que criou uma regressão. Ou pode ser que uma versão mais recente tmux/ vimsimplesmente tenha exposto o problema existente no PuTTY. De qualquer forma, será necessária alguma investigação adicional para ser totalmente resolvido. Encontre algumas informações de versão pertinentes abaixo se isso puder ajudar alguém em sua investigação.


Versão informação

Ubuntu 12.04informações da versão ('rolando para cima' dentro vimdetmux funciona):

  • tmux: 1,6-1
  • vim: 7.3.429-2

Ubuntu 13.10informações da versão ('rolar para cima' dentro vimde tmuxéquebrado):

  • tmux: 1,8-4
  • vim: 7.4.000-1

Também digno de nota - o postador do gmane relatou não ter observado o problema em tmux1.7 + vim7.3. A primeira observação de Poster sobre o problema também foi com tmux1,8 + vim7,4.


Esperançosamente, pelo menos, esta resposta fornece a qualquer pessoa dedicada (ou presa ao) PuTTY uma opção para solucionar esse problema. Além disso, espero que alguém possa entender as observações adicionais acima e ajudar a levar o tópico a uma resolução adequada.

Responder2

Não tenho nenhum problema com a instalação do Ubuntu 16.04. tmux é a versão padrão instalada do apt-get. Vim é a versão 8. PuTTY é a versão 0.67

Tanto a rolagem quanto o clique funcionam dentro do vim quando hospedados em uma sessão tmux.

~/.tmux.conf

set-option -g mouse on

Esteja ciente de que as opções do tmux para controle do mouse foram alteradas em relação às versões anteriores.

~/.vimrc

set mouse=a

Esteja ciente queesta respostasugere que um plugin vim pode ser a causa do problema.

Responder3

Para quem acaba aqui: isso foi corrigido no pré-lançamento 0.64, que você pode baixar no site oficial do PuTTY.

Responder4

Esta é a única maneira de fazer a rolagem funcionar corretamente:

Colocar:

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

No arquivo:~/.tmux.conf

informação relacionada