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.