Sự cố khi sử dụng phím Ctrl + Mũi tên trong Vim khi sử dụng Byobu với tmux


12

Trong Vim, tôi đã đặt các phím Ctrl + Mũi tên để bỏ qua các từ. Điều này chỉ hoạt động tốt khi chạy Vim bên trong thiết bị đầu cuối gnome.

Tuy nhiên, khi sử dụng byobu (tmux), nó cho thấy hành vi kỳ lạ: nó xóa mọi thứ sau con trỏ.

Để tham khảo, đây là các cài đặt vim của tôi:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w

Câu trả lời:


7

Vấn đề là gấp đôi. Đầu tiên, tmuxtheo 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 vimmà 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à tmuxtheo 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 screennếu tương ứng TERMbên ngoài đã vte, vte-256colorvv tmuxkhô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-basetrong 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.conftệ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:


Hmmm ... Điều này không hoạt động :) Nhưng chỉ một phần. Chỉ Control+ Leftđang hoạt động; Control+ Rightkhông. Tôi sẽ kiểm tra và cập nhật sau.
shivams

1
Bạn có thể có một số ràng buộc khác can thiệp vào quyền kiểm soát + quyền (chi tiết được cung cấp, tôi có thể đưa ra lời khuyên).
Thomas Dickey

Cảm ơn bạn đã cung cấp :) Tôi đã điều tra một chút và thấy rằng thực sự một số keybindings khác đang gây nhiễu. Ví dụ, trên máy Mac của tôi, nó hoạt động tốt, trong khi ở Linux (sử dụng Guake) thì không. Tuy nhiên, tôi ra khỏi trạm ngay và không thể truy cập Linux của tôi. Tôi sẽ cập nhật khi tôi giải quyết vấn đề.
shivams

@Thomam Dickey: Trong khi đó, tôi chấp nhận câu trả lời của bạn vì nó thực sự giải quyết được vấn đề.
shivams

@ThomasDickey Tôi chỉ muốn nói, "Go raibh míle maith agat" mà trong tiếng Ailen được dịch theo nghĩa đen là "Chúc bạn có một ngàn điều tốt." Cảm ơn bạn rất nhiều vì câu trả lời này. Bạn là một ngôi sao.
Cướp

2

Từ đây, bạn có thể hủy liên kết khóa trong byobu:

Tạo một tệp ~/.byobu/.tmux.confvới (hoặc thêm nếu tệp tồn tại):

set-window-option -g xterm-keys on

Sau đó thêm các mục sau vào ~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right

Điều này không hoạt động. Tuy nhiên nó đã cho tôi sự dẫn dắt vững chắc. Tôi sẽ cố gắng đi theo sự dẫn dắt và đưa ra một số giải pháp. Cảm ơn :)
shivams
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.