Então, graças a Screwtape , eu tenho uma resposta para isso. Reproduzido abaixo:
O protocolo original do mouse xterm
suporta apenas até 223 colunas e
linhas. Versões posteriores do protocolo usavam a codificação UTF-8, que
para ser uma idéia terrível, e suporte a terminais mais modernos
um protocolo completamente diferente baseado na seqüência de escape SGR que é
muito mais sensato.
tmux
suporta automaticamente o protocolo original e o protocolo SGR
nos dois sentidos (para o terminal em que ele está sendo executado e para o
aplicativos que estão sendo executados dentro dele.) mas só solicita o modo UTF-8 de
o terminal externo se 'mouse-utf8' estiver habilitado no arquivo de configuração.
Você pode usar a ferramenta vttest
para experimentar diferentes protocolos de mouse
dentro e fora de tmux
para ter uma ideia melhor do que está acontecendo.
De acordo com a documentação da opção 'ttymouse'
do Vim, ele perguntará
o terminal para suporte ao protocolo original xterm se $TERM
for uma variante
de xterm
, mlterm
ou screen
(e tmux
se reporta como screen
, então isso é
ESTÁ BEM). Se o terminal suportar o recurso "RV"
termcap para determinar o
xterm
número da versão, o Vim usará isso para atualizar automaticamente para
'xterm2'
ou 'sgr'
protocolos de mouse ... mas normalmente apenas xterm
anuncia
"RV"
support, então tmux
é deixado de fora do processo de upgrade automático.
No meu ~/.vimrc
eu tenho o seguinte código para habilitar o suporte decente ao mouse,
em vez de confiar na autodetecção do Vim:
" Screen/tmux can also handle xterm mousiness, but Vim doesn't
" detect it by default.
if &term == "screen"
set ttymouse=xterm2
endif
if v:version >= 704 && &term =~ "^screen"
" Odds are good that this is a modern tmux, so let's pick the
" best mouse-handling mode.
set ttymouse=sgr
endif
(note que o set ttymouse=sgr
é a correção real aqui; sugiro adicioná-lo ao seu .vimrc
como Tim fez.)