Não tenho um Mac à mão para testar esta resposta, mas encontro esse problema no XTerm no Linux muito ocasionalmente e (supondo que o iTerm2 respeite os mesmos códigos de controle), você pode achar a correção abaixo útil.
Execute o seguinte comando shell dentro do terminal em que você está vendo o problema:
printf "\e[?1004l"
(Observe que o último caractere existe em minúsculas 'ell'.)
Essa sequência de controle ANSI é semelhante à listada na resposta de Thomas Dickey, mas desativa o recurso (em vez de o ativar). Ele deve resolver seu problema em todos os aplicativos, não apenas no Vim, impedindo a ocorrência dos caracteres.
No Linux, posso demonstrar essa sequência de controle trabalhando com as seguintes etapas:
- Execute
xterm
e ative o recurso executando printf "\e[?1004h"
nele.
- Execute
xeyes
ou algum outro aplicativo GUI desse mesmo XTerm . (Por alguma razão, esse efeito não ocorre para mim até que o XTerm em questão inicie um aplicativo. Alguém sabe por quê?)
- Alterne repetidamente o foco para dentro e para fora do XTerm original (por exemplo, clicando nas janelas) e veja
^[[O
e ^[[I
sendo "digitado" no XTerm original.
- Agora feche o Xeyes, retorne ao XTerm original e execute
printf "\e[?1004l"
(para desativar o recurso, conforme descrito na correção acima).
- Repita as etapas " executar
xeyes
, mudar o foco " acima, mas desta vez não há caracteres sendo inseridos no terminal.
Pessoalmente, só vejo esse problema se despejar inadvertidamente a saída binária no terminal, mas se você a encontrar com mais regularidade, poderá adicioná-la printf
ao script de inicialização interativa do seu shell (por exemplo ~/.bashrc
). Parece não haver nenhum dano (pelo menos no XTerm) ao enviar o código de controle se o recurso já estiver desativado, portanto, deve ser seguro mesmo que você veja esse problema apenas algumas vezes.
Se você está preocupado com o seu shell sempre gerar essa saída, talvez porque você às vezes o use em locais que não lidam bem com esses códigos de controle ou se o problema for desencadeado algumas vezes após a inicialização do shell, você pode preferir definir alias focusfix='printf "\e[?1004l"'
crie um alias (por exemplo, com ) para tornar mais conveniente a execução manual.