Inserção estranha de Vim no clique do mouse

5

Estou usando putty (no windows 7) para conectar ao shell e ao Vim como editor. Eu também tenho mouse = uma opção habilitada no Vim, mas eu tenho um comportamento estranho (como inserções aleatórias de caracteres e / ou quebras de linha) quando clico no lado direito da janela do Vim (digamos que é como 70% + do área de largura da tela, onde fica esquisito). Estou lentamente me acostumando com esse tipo de comportamento, mas gostaria muito de saber se poderia de alguma forma consertar isso.

    
por kK-Storm 17.04.2012 / 09:02

2 respostas

7

PuTTY envia eventos de mouse usando um protocolo xterm que remonta a X10 em meados dos anos oitenta. Isso codifica as coordenadas do mouse com um único byte para linha e coluna, enquanto 32 (o código ASCII para um caractere de espaço) é adicionado. Isto permite coordenadas até 223 (que é 255 - 32).

Infelizmente, essa codificação não adere aos padrões aplicáveis para sequências de controle de terminal, e a faixa pode efetivamente ser ainda mais restrita a 95 (isto é, 127 a 32) se as aplicações não fizerem concessões especiais para ela. Em particular, se um aplicativo executa a decodificação UTF-8 antes da análise de seqüência de controle, as coordenadas do mouse além de 95 acabam sendo tratadas como UTF-8 inválida.

Durante o ano passado, várias tentativas foram feitas para resolver esse problema no xterm. O melhor deles é o chamado modo SGR 1006 adicionado no patch # 277 , que usa uma sequência de controle compatível com as coordenadas ilimitadas. Suporte para isso vai lentamente permear para outros emuladores e aplicativos de terminal.

    
por 18.04.2012 / 13:21
1

Isto foi corrigido em Vim 7.3.632 . Veja :h sgr-mouse . Ou apenas coloque isso no seu ~/.vimrc :

set ttymouse=sgr

Se você deseja ser compatível com versões que não têm mouse_sgr compilado, use:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end

Para ver se sua versão do Vim tem mouse_sgr , execute vim --version na linha de comando ou no Vim, digite :version e procure por +mouse_sgr .

    
por 08.10.2013 / 18:28

Tags