Inserción extraña desde Vim al hacer clic con el mouse

Inserción extraña desde Vim al hacer clic con el mouse

Estoy usando PuTTY (en Windows 7) para conectarme al Shell y Vim como editor. También tengo la opción mouse=a habilitada en Vim, pero obtengo un comportamiento extraño (como inserciones aleatorias de caracteres y/o saltos de línea) cuando hago clic en el lado derecho de la ventana de Vim (digamos que es como más del 70% de la área del ancho de la pantalla donde se vuelve extraño). Poco a poco me estoy acostumbrando a ese comportamiento, pero realmente me gustaría saber si de alguna manera puedo solucionarlo.

Respuesta1

PuTTY envía eventos del mouse utilizando un protocolo xterm que se remonta a X10 a mediados de los años ochenta. Esto codifica las coordenadas del mouse con un solo byte para cada fila y columna, por lo que se agrega 32 (el código ASCII para un carácter de espacio). Esto permite coordenadas hasta 223 (que es 255 - 32).

Desafortunadamente, esa codificación no cumple con los estándares aplicables para secuencias de control de terminales, y el rango puede restringirse aún más a 95 (es decir, 127 - 32) si las aplicaciones no tienen concesiones especiales para ello. En particular, si una aplicación realiza la decodificación UTF-8 antes del análisis de la secuencia de control, las coordenadas del mouse más allá de 95 terminan siendo tratadas como UTF-8 no válidas.

Durante el año pasado, se realizaron varios intentos para abordar este problema en xterm. El mejor de ellos es el llamado modo SGR 1006 agregado enparche #277, que utiliza una secuencia de control estándar con coordenadas ilimitadas. La compatibilidad con esto se irá extendiendo lentamente a otros emuladores y aplicaciones de terminal.

Respuesta2

Esto se ha solucionado enVim 7.3.632. Ver :h sgr-mouse. O simplemente pon esto en tu ~/.vimrc:

set ttymouse=sgr

Si quieres ser compatible con versiones que no están mouse_sgrcompiladas, usa:

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

Para ver si su versión de Vim tiene mouse_sgr, ejecútelo vim --versiondesde la línea de comandos o, en Vim, ingrese :versiony busque +mouse_sgr.

información relacionada