Inserção estranha do Vim com um clique do mouse

Inserção estranha do Vim com um clique do mouse

Estou usando o PuTTY (no Windows 7) para conectar ao Shell e ao Vim como editor. Também tenho a opção mouse=a habilitada no Vim, mas recebo alguns comportamentos estranhos (como inserções aleatórias de caracteres e/ou quebras de linha) quando clico no lado direito da janela do Vim (digamos que seja 70%+ do área de largura da tela onde fica estranho). Estou me acostumando lentamente com esse comportamento, mas gostaria muito de saber se posso consertar isso de alguma forma.

Responder1

PuTTY envia eventos de mouse usando um protocolo xterm que remonta ao X10 em meados dos anos oitenta. Isso codifica as coordenadas do mouse com um único byte para linha e coluna, onde 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 segue os padrões aplicáveis ​​para sequências de controle de terminal, e o intervalo pode efetivamente ser ainda mais restrito a 95 (ou seja, 127 - 32) se as aplicações não fizerem concessões especiais para isso. Em particular, se um aplicativo executar a decodificação UTF-8 antes da análise da sequência de controle, as coordenadas do mouse além de 95 acabarão sendo tratadas como UTF-8 inválido.

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

Responder2

Isso foi corrigido emVim 7.3.632. Ver :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 foram mouse_sgrcompiladas, use:

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

Para ver se a sua versão do Vim possui mouse_sgr, execute vim --versionna linha de comando ou no Vim, digite :versione procure por +mouse_sgr.

informação relacionada