Resumo
A questão começa claramente com o PuTTY, mas não termina necessariamente aí. Existe um link para uma possível correção para a questão do PuTTY abaixo, bem como uma análise da questão como um todo.
Descrição do problema
Configuração
vim
com mouse=a
ativado para rolagem, seleção e movimento do cursor
tmux
, sem a funcionalidade de mouse tmux
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 é usar vim
dentro de de tmux
. Evitar interações negativas entre tmux
e vim
é um dos principais motivos para desativar a rolagem tmux
.
Comportamento
Por favor, note que o seguinte apenas ocorre quando se usa o PuTTY como emulador de terminal, e não é reproduzível no gnome-terminal ou qualquer outro emulador de terminal Linux testado.
Ao tentar "rolar para cima" usando o mouse em vim
dentro de de uma sessão tmux
, a ação simplesmente falha. Como OP descreve, muitas vezes é possível ver o buffer empurrando 'para cima e para baixo' como se houvesse uma contra-ação ocorrendo com cada tentativa de rolagem (mais sobre isso abaixo).
Isso é basicamente o mesmo que a descrição do OP, mas recapitulado apenas no 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 a 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 comportamento de rolagem vim
primeiro fora de tmux
(onde a rolagem funciona corretamente) e segundo dentro de tmux
( onde a rolagem para cima não funciona, e uma única tentativa de rolar para baixo rola duas vezes mais.
De acordo com o seguinte tópico gmane , o problema descrito acima é resolvido com um patch de Putty-X ( link ):
Link para o segmento gmane : link .
OBSERVAÇÃO: eu não validei a solução acima, por favor, revise o tópico gmane para informações adicionais.
Observações adicionais
O fato de realmente ser interessante é que esse é um novo problema 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 ativamente demonstrado em um sistema Ubuntu 13.10, enquanto um sistema Ubuntu 12.04 não exibe o problema.
No início, o problema parece apontar para um delta de configuração do sistema (ou seja, ausente ncurses-term ou similar), mas nenhuma correção foi identificada usando esse tipo de solução. Além disso, os vários relatórios deste 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
/ vim
'tenha corrigido' algo que criou uma regressão. Ou pode ser que uma versão mais recente de tmux
/ vim
simplesmente expusesse o problema existente no PuTTY. De qualquer forma, será necessária alguma investigação adicional para resolver completamente. Por favor, encontre alguma informação pertinente sobre a versão abaixo se isso puder ajudar alguém em sua investigação.
Informações da versão
Ubuntu 12.04 informações da versão ('rolando para cima' em vim
dentro de tmux
funciona ):
-
tmux
: 1,6-1 -
vim
: 7.3.429-2
Ubuntu 13.10 informações da versão ('rolando para cima' em vim
dentro de tmux
está quebrado ):
-
tmux
: 1.8-4 -
vim
: 7.4.000-1
Também digno de nota - o pôster gmane relatou não observar o problema em tmux
1.7 + vim
7.3. A primeira observação do Poster sobre o problema foi também com tmux
1.8 + vim
7.4.
Espero que, no mínimo, essa resposta forneça a alguém dedicado (ou preso a) ao PuTTY uma opção para resolver esse problema. Além disso, esperamos que alguém possa entender as observações adicionais acima e ajudar a trazer o tópico para uma resolução adequada.