Проблема двояка. По-перше, tmux
за замовчуванням перетворює клавіші-стрілки управління з одного типу послідовності втечі в інший. Тому спеціальні клавіші , такі як controlleftнадсилаються vim
без модифікатора, наприклад, left. Якщо ви cat -v
бачите різні послідовності втечі, ви можете побачити щось подібне
^[OD
проти цього (поза tmux):
^[[1;5D
Лінія
set-window-option -g xterm-keys on
виправляє цей аспект. Інша частина полягає в тому, що tmux
за замовчуванням використовується опис терміналу для screen
. Цей опис терміналу не описує клавіші управління. Ці записи з бази даних терміналів були б найбільш підходящими для VTE (gnome-terminal):
Є й інші, такі як
який буде обраний автоматично при роботі в 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
ні. Я перевіряю та оновлю пізніше.