Problem jest dwojaki. Po pierwsze, tmux
domyślnie konwertuje klawisze strzałek kontrolnych z jednego rodzaju sekwencji zmiany znaczenia na inny. Więc specjalne klucze, na które controlleftsą wysyłane vim
bez modyfikatora, np left. Jeśli używasz, cat -v
aby 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 tmux
domyś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 screen
razie odpowiedniego TERM
zewnątrz były vte
, vte-256color
itp tmux
nie 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-base
Debian, 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.conf
pliku, będzie działał tak, jak się spodziewasz w vimie:
set -g default-terminal "xterm-256color"
Dalsza lektura:
Control
+Left
;Control
+Right
nie jest. Przetestuję i zaktualizuję później.