Problem jest dwojaki. Po pierwsze, tmuxdomyślnie konwertuje klawisze strzałek kontrolnych z jednego rodzaju sekwencji zmiany znaczenia na inny. Więc specjalne klucze, na które controlleftsą wysyłane vimbez modyfikatora, np left. Jeśli używasz, cat -vaby zobaczyć różne sekwencje specjalne, możesz zobaczyć coś takiego
^[OD
kontra to (poza tmux):
^[[1;5D
Linia
set-window-option -g xterm-keys on
naprawia ten aspekt. Drugą częścią jest to, że tmuxdomyślnie używa opisu terminala dla screen. Ten opis terminala nie opisuje klawiszy strzałek kontrolnych. Te wpisy z bazy danych terminali byłyby najbardziej odpowiednie dla VTE (terminal gnome):
Istnieją inne, takie jak
który byłby wybierany automatycznie podczas pracy w screenrazie odpowiedniego TERMzewnątrz były vte, vte-256coloritp tmuxnie to automatyczną selekcję; musisz zmodyfikować jego plik konfiguracyjny.
Nawiasem mówiąc, nie ma wpisu „screen.xterm”, ponieważ zakłócałby niektóre zastosowania screen. Nie ma konfliktu z TERM=xterm-new.
Jeśli masz domyślną (minimalną) bazę danych terminali, taką jak ncurses-baseDebian, możesz ich nie mieć. Bardziej powszechne byłoby xterm-256color, co jest wystarczająco blisko, aby używać go z vimem i tmuxem.
Na przykład, jeśli dodam to do mojego .tmux.confpliku, będzie działał tak, jak się spodziewasz w vimie:
set -g default-terminal "xterm-256color"
Dalsza lektura:
Control+Left;Control+Rightnie jest. Przetestuję i zaktualizuję później.