Sử dụng Ctrl + [0-9] để xoay vòng giữa các cửa sổ bằng tmux


8

Tôi đã bắt đầu sử dụng tmuxnhưng tôi cảm thấy việc sử dụng Ctrlb0-9rất khó chịu, vì nó được sử dụng rất thường xuyên.

Làm cách nào để liên kết bàn phím để tôi chỉ cần Ctrl0-9thay đổi cửa sổ (như trong Chrome)?

Tôi đã cố gắng cấu hình nó trong .tmux.conf, nhưng không thành công.

đây là tập tin .tmux.conf hiện tại của tôi

bind C select-pane -t :.+
set -g status-bg black
set -g status-fg white

Các phím tắt đơn giản như được giải thích, Ctrl + [1-9] cho tab [1-9]. Sự khác biệt giữa chúng là hiện tại nó không hoạt động và 'liên kết C select-pane -t :. +' Chỉ là thứ tôi đã thử
Johan Bjäreholt

Câu trả lời:


9

Một số tổ hợp phím chữ số Control + tạo ra các chuỗi khá chuẩn, nhưng không phải tất cả chúng đều được.

Đây là những gì tôi tìm thấy trong xterm mà tôi đã có:

C-1: 1  (i.e. not different form a plain 1 keystroke)
C-2: ^@
C-3: ^[
C-4: ^\
C-5: ^]
C-6: ^^
C-7: ^_
C-8: ^?
C-9: 9  (i.e. plain 9)
C-0: 0  (i.e. plain 0)

Các trình tự tương tự được tạo ra trong iTerm 2 (mặc dù điều này có cấu hình cao).

Nếu trình giả lập thiết bị đầu cuối của bạn tạo ra các chuỗi tương tự, thì bạn có thể liên kết hầu hết chúng (mặc dù bạn cần sử dụng các tên gọi tiêu chuẩn, không phải là số đối với các khóa, ví dụ C-@hoặc ^@et cetera). Bạn sẽ phải tìm cách định cấu hình thiết bị đầu cuối của mình để gửi một số loại trình tự cho bất kỳ tổ hợp phím nào chưa gửi một cái gì đó khác với khóa chưa sửa đổi (ví dụ như 1, 9 và 0 ở trên).

Tuy nhiên , ràng buộc các khóa này mà không có Tiền tố ( bind -n …) có thể sẽ phá vỡ nhiều thứ. Cụ thể, ^[là ký tự Escape (được sử dụng trong hầu hết các chuỗi điều khiển đầu cuối), ^?thường là ký tự Xóa, ^@(như C-Space) thường được sử dụng trong chỉnh sửa Emacs (kiểu), et cetera.

Có lẽ một cách tiếp cận tốt hơn là định cấu hình thiết bị đầu cuối của bạn để gửi các chuỗi sửa đổi kiểu xterm theo phong cách xterm mà tmux 1.8 nhận ra (nếu xterm của bạn hỗ trợ điều này, tmux sẽ tự động yêu cầu điều này xảy ra):

C-1: ^[[27;5;49~
C-2: ^[[27;5;50~
C-3: ^[[27;5;51~
C-4: ^[[27;5;52~
C-5: ^[[27;5;53~
C-6: ^[[27;5;54~
C-7: ^[[27;5;55~
C-8: ^[[27;5;56~
C-9: ^[[27;5;57~
C-0: ^[[27;5;48~

Tên tmux cho các khóa này là chính xác C-0, et cetera.

Lưu ý: Những tên và trình tự quan trọng này không được nhận dạng bởi các phiên bản tmux cũ hơn 1.8.

Bạn sẽ ràng buộc họ như thế này (trong của bạn .tmux.conf):

bind-key -n C-0 select-window -t :0
bind-key -n C-1 select-window -t :1
bind-key -n C-2 select-window -t :2
bind-key -n C-3 select-window -t :3
bind-key -n C-4 select-window -t :4
bind-key -n C-5 select-window -t :5
bind-key -n C-6 select-window -t :6
bind-key -n C-7 select-window -t :7
bind-key -n C-8 select-window -t :8
bind-key -n C-9 select-window -t :9

"Nếu xterm của bạn hỗ trợ điều này, tmux sẽ tự động yêu cầu điều này xảy ra" - bạn có thể giải thích ngắn gọn / đề cập đến cơ chế mà tmux thực hiện điều này không?
Charles

@Charles: tmux 1.8 gửi trình tự ^[[>4;1mđể kích hoạt chức năng redirectOtherKeys (xem Trình tự điều khiển XTerm , tìm kiếm redirectOtherKeys ). Tuy nhiên, tmux 1.9 không còn gửi chuỗi này .
Chris Johnsen

1

Câu trả lời @ChrisJohnsen là hoàn hảo, tuy nhiên một số người có thể muốn một số trợ giúp về cách thiết lập các phím Iterm 2 để đạt được hành vi này.

Đầu tiên, đi đến "Iterm2 -> Tùy chọn -> Cấu hình -> Phím" như trong:

Cấu hình hồ sơ lặp

và sau đó nhấp vào +biểu tượng để thêm cài đặt trước khi một số Ctrl+ Numberkhông có trong danh sách (định dạng trong danh sách sẽ có ^number), vì đây là trường hợp ^1không có trong danh sách mặc định.

Nhấn Ctrl+ 1khi chọn phím tắt và chọn "gửi chuỗi thoát" làm hành động. Sau đó, thêm các chuỗi thoát của Chris Johnsen mà không có ^ [, sẽ được thêm vào bằng hành động iterm2:

nhập mô tả hình ảnh ở đây

Sau đó, lặp lại quy trình này cho tất cả các phím điều khiển khác, chỉnh sửa những khóa đã tồn tại.

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.