No tengo una Mac a mano para probar esta respuesta, pero encuentro este problema en XTerm bajo Linux muy ocasionalmente y (suponiendo que iTerm2 respete los mismos códigos de control) puede encontrar útil la solución a continuación.
Ejecute el siguiente comando de shell dentro de la terminal donde está viendo el problema:
printf "\e[?1004l"
(Tenga en cuenta que el último carácter es un 'ell' en minúsculas).
Esta secuencia de control ANSI es como la que aparece en la respuesta de Thomas Dickey, pero desactiva la función (en lugar de activarla). Debería resolver su problema en todas las aplicaciones, no solo en Vim, evitando que los caracteres ocurran.
En Linux puedo demostrar esta secuencia de control trabajando con los siguientes pasos:
- Ejecute
xterm
y habilite la función ejecutándose printf "\e[?1004h"
en ella.
- Ejecute
xeyes
o alguna otra aplicación GUI desde ese mismo XTerm . (Por alguna razón, este efecto no me sucede hasta que el XTerm en cuestión lanza una aplicación. ¿Alguien sabe por qué?)
- Cambie repetidamente el foco dentro y fuera del XTerm original (por ejemplo, haciendo clic en Windows) y vea
^[[O
y ^[[I
se "teclee" en el XTerm original.
- Ahora cierre Xeyes, regrese al XTerm original y ejecútelo
printf "\e[?1004l"
(para deshabilitar la función, como se describe en la corrección anterior).
- Repita los pasos anteriores de " ejecutar
xeyes
, cambiar el foco ", pero esta vez no verá caracteres ingresados en el terminal.
Personalmente, solo veo este problema si accidentalmente descargué la salida binaria al terminal, pero si la encuentras más regularmente, es posible que desees agregar eso printf
al script de inicio interactivo de tu shell (por ejemplo ~/.bashrc
). No parece haber ningún daño (al menos en XTerm) al enviar el código de control si la función ya está desactivada, por lo que debería ser seguro incluso si solo ve este problema a veces.
Si le preocupa que su shell siempre genere esa salida, tal vez porque a veces lo usa en lugares que no manejan bien esos códigos de control, o si el problema a veces se desencadena después de que se inicia el shell, entonces es posible que prefiera configurar un alias (por ejemplo, con alias focusfix='printf "\e[?1004l"'
) para que sea más conveniente ejecutarlo manualmente.