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.)