Le problème est double. Tout d'abord, tmuxpar défaut, convertit les touches fléchées de contrôle d'un type de séquence d'échappement en un autre. Donc les touches spéciales telles que controlleftsont envoyées vimsans modification, par exemple left. Si vous utilisez cat -vpour voir les différentes séquences d'échappement, vous pourriez voir quelque chose comme ça
^[OD
par rapport à cela (en dehors de tmux):
^[[1;5D
La ligne
set-window-option -g xterm-keys on
corrige cet aspect. L'autre partie est que tmuxpar défaut utilise la description du terminal pour screen. Cette description de terminal ne décrit pas les touches de direction. Ces entrées de la base de données du terminal seraient les plus appropriées pour VTE (gnome-terminal):
Il y en a d'autres, comme
qui serait automatiquement sélectionné lors de l' exécution dans le screencas correspondant à l' TERMextérieur étaient vte, vte-256coloretc. tmuxne le fait pas-sélection automatique; vous devez modifier son fichier de configuration.
Soit dit en passant, il n'y a pas d'entrée "screen.xterm" car cela interférerait avec certaines utilisations de screen. Il n'y a aucun conflit avec TERM=xterm-new.
Si vous avez une base de données de terminaux par défaut (minimale) comme ncurses-basedans Debian, vous ne les avez peut-être pas. Le plus courant serait xterm-256color, qui est assez proche pour être utilisé avec vim et tmux.
Par exemple, si j'ajoute ceci à mon .tmux.conffichier, il se comporte comme vous vous attendez dans vim:
set -g default-terminal "xterm-256color"
Lectures complémentaires:
Control+Leftfonctionne;Control+Rightne l'est pas. Je testerai et mettrai à jour plus tard.