O problema é duplo. Primeiro, tmux
por padrão, converte as teclas de seta de controle de um tipo de sequência de escape para outro. Então, chaves especiais como as que controlleftsão enviadas vim
sem o modificador, por exemplo left,. Se você cat -v
ver as diferentes seqüências de escape, poderá ver algo como isto
^[OD
contra isso (fora do tmux):
^[[1;5D
A linha
set-window-option -g xterm-keys on
corrige esse aspecto. A outra parte é que, tmux
por padrão, usa a descrição do terminal para screen
. Essa descrição do terminal não descreve as teclas de seta de controle. Essas entradas do banco de dados do terminal seriam as mais apropriadas para o VTE (gnome-terminal):
Existem outros, como
que seria selecionado automaticamente quando rodando em screen
se o correspondente TERM
fora eram vte
, vte-256color
etc. tmux
não faz isso-seleção automática; você precisa modificar seu arquivo de configuração.
A propósito, não há entrada "screen.xterm" porque isso interferiria em alguns usos de screen
. Não há conflito com TERM=xterm-new
.
Se você possui um banco de dados de terminal padrão (mínimo), como ncurses-base
no Debian, talvez não o possua. Mais comum seria xterm-256color
, que é próximo o suficiente para ser usado com o vim e o tmux.
Por exemplo, se eu adicionar isso ao meu .tmux.conf
arquivo, ele se comportará conforme o esperado no vim:
set -g default-terminal "xterm-256color"
Leitura adicional:
Control
+Left
está funcionando;Control
+Right
não é. Vou testar e atualizar mais tarde.