Rolar o mouse no vim através do tmux, como configurar?

4

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 empurra "para cima e para baixo" e fica 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.

Edit: Eu 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 idéia?

    
por Dago 25.01.2014 / 18:13

4 respostas

5

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.

    
por 15.04.2014 / 00:09
2

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

    
por 14.01.2015 / 23:31
0

Esta é a única maneira que consegui fazer a rolagem funcionar corretamente:

Coloque:

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

No arquivo: ~/.tmux.conf

    
por 28.10.2015 / 12:02
0

Eu não tenho nenhum problema com uma instalação do Ubuntu 16.04. O tmux é a versão padrão do apt-get instalado. Vim é a versão 8. O PuTTY é a versão 0.67

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

~ / .tmux.conf

set-option -g mouse on

Esteja ciente de que as opções do tmux para o controle do mouse mudaram de versões anteriores.

~ / .vimrc

set mouse=a

Saiba que esta resposta sugere que um plug-in vim pode ser a causa do problema.

    
por 17.02.2017 / 08:59