Проблема двоякая. Сначала tmuxпо умолчанию преобразует клавиши управления стрелками из одного типа escape-последовательности в другой. Поэтому специальные клавиши , такие как controlleftпосылаются vimбез модификатора, например, left. Если вы используете, cat -vчтобы увидеть различные escape-последовательности, вы можете увидеть что-то вроде этого
^[OD
против этого (вне tmux):
^[[1;5D
Линия
set-window-option -g xterm-keys on
исправляет этот аспект. Другая часть заключается в том, что tmuxпо умолчанию используется описание терминала для screen. Это описание терминала не описывает клавиши со стрелками управления. Эти записи из базы данных терминала будут наиболее подходящими для VTE (gnome-терминал):
Есть и другие, такие как
который будет выбран автоматически при работе в screenслучае , если соответствующие TERMснаружи были vte, vte-256colorи т.д. tmuxне делает это автоматический отбор; Вы должны изменить его файл конфигурации.
Между прочим, нет записи "screen.xterm", потому что это может помешать некоторым использованиям screen. Там нет конфликта с TERM=xterm-new.
Если у вас есть терминальная база данных по умолчанию (минимальная), такая как ncurses-baseв Debian, у вас ее может не быть. Более распространенным было бы то xterm-256color, что достаточно близко для использования с vim и tmux.
Например, если я добавлю это в свой .tmux.confфайл, он будет вести себя так, как вы ожидаете в vim:
set -g default-terminal "xterm-256color"
Дальнейшее чтение:
Control+Leftработает;Control+Rightнет. Я проверю и обновлю позже.