Vấn đề là gấp đôi. Đầu tiên, tmux
theo mặc định chuyển đổi các phím mũi tên điều khiển từ một loại chuỗi thoát sang loại khác. Vì vậy, các khóa đặc biệt như controlleftđược gửi đến vim
mà không cần sửa đổi, ví dụ : left. Nếu bạn sử dụng cat -v
để xem các chuỗi thoát khác nhau, bạn có thể thấy một cái gì đó như thế này
^[OD
so với điều này (bên ngoài tmux):
^[[1;5D
Dòng
set-window-option -g xterm-keys on
sửa chữa khía cạnh đó. Phần khác là tmux
theo mặc định sử dụng mô tả thiết bị đầu cuối cho screen
. Mô tả thiết bị đầu cuối đó không mô tả các phím mũi tên điều khiển. Các mục từ cơ sở dữ liệu đầu cuối sẽ phù hợp nhất với VTE (gnome-terminal):
Có những cái khác, chẳng hạn như
mà sẽ được tự động chọn khi chạy trong screen
nếu tương ứng TERM
bên ngoài đã vte
, vte-256color
vv tmux
không làm điều này tự động lựa chọn; bạn phải sửa đổi tập tin cấu hình của nó.
Nhân tiện, không có mục "screen.xterm" vì nó sẽ can thiệp vào một số cách sử dụng screen
. Không có xung đột với TERM=xterm-new
.
Nếu bạn có cơ sở dữ liệu đầu cuối mặc định (tối thiểu) như ncurses-base
trong Debian, bạn có thể không có cơ sở dữ liệu đó. Phổ biến hơn sẽ là xterm-256color
, đủ gần để sử dụng với vim và tmux.
Ví dụ: nếu tôi thêm phần này vào .tmux.conf
tệp của mình , nó sẽ hoạt động như bạn mong đợi trong vim:
set -g default-terminal "xterm-256color"
Đọc thêm:
Control
+Left
đang hoạt động;Control
+Right
không. Tôi sẽ kiểm tra và cập nhật sau.