Hiện tại không có cách trực tiếp để đặt lại ràng buộc của khóa về mặc định của nó; việc khởi tạo các ràng buộc mặc định (in key_bindings_init()
) được thực hiện một lần khi máy chủ tmux khởi động (in server_start()
) lần đầu tiên và không có cơ chế để thiết lập lại một khóa.
Đối với kịch bản mong muốn của bạn, nơi bạn muốn hành động tìm nguồn cung cấp tệp cấu hình của mình để thiết lập lại một ràng buộc mặc định đã bị ghi đè trước đó bởi một ràng buộc tùy chỉnh đã bị xóa khỏi tệp cấu hình của bạn, phương thức bạn nghĩ ra là hợp lý (mặc dù không may là dài dòng) : unbind-key -a
, sau đó thiết lập lại tất cả các liên kết mặc định của Viking, sau đó thiết lập các ràng buộc tùy chỉnh của bạn (một số trong đó có thể ghi đè lên một ràng buộc mặc định của Viking).
Các ràng buộc hiện tại của máy chủ có thể được trích xuất bằng list-keys
lệnh * ; điều này có thể giúp tạo / duy trì .tmux.reset.conf
tệp đề xuất của bạn , nhưng bạn cần một cách để trích xuất các ràng buộc mặc định , không phải các ràng buộc hiện tại .
* Có một số tình huống mà đầu ra của list-keys
hiện không thể sử dụng trực tiếp: ràng buộc cho dấu chấm phẩy cần dấu chấm phẩy của nó được thoát bằng dấu gạch chéo ngược để ngăn nó được hiểu là dấu tách lệnh tmux và bất kỳ ràng buộc nào có sử dụng dấu ngoặc kép trong một dấu ngoặc đơn dấu ngoặc kép (không có ràng buộc mặc định nào giống như thế này) sẽ xuất hiện dưới dạng dấu ngoặc kép bên trong đôi chữ cái .
Để có được các ràng buộc mặc định, bạn cần một máy chủ tạm thời với cấu hình tối thiểu (nghĩa là không có ràng buộc tùy chỉnh) để bạn có thể nắm bắt list-keys
đầu ra của nó . Không có giới hạn về số lượng máy chủ tmux bạn có thể chạy, nhưng mỗi máy chủ phải sử dụng một tên đường dẫn ổ cắm khác nhau; các tùy chọn -L
và -S
tmux có thể được sử dụng để chỉ định tên ổ cắm (trong $TMPDIR/tmux-$UID
hoặc tên đường dẫn ổ cắm đầy đủ. Vì vậy, để nói chuyện với (hoặc bắt đầu) một máy chủ mới trên ổ cắm có tên temp
, bạn sẽ sử dụng:
tmux -L temp …
Để đảm bảo nó không sử dụng của bạn .tmux.conf
, bạn sử dụng -f
để bảo nó đọc /dev/null
(một tệp đặc biệt luôn trống):
tmux -f /dev/null -L temp …
Lưu ý : điều này không ngăn cản việc xử lý /etc/tmux.conf
, nếu một tệp như vậy tồn tại; đường dẫn đến tập tin cấu hình hệ thống này, hệ thống cứng được mã hóa cứng và không có tùy chọn nào để bỏ qua nó (thiếu bản vá mã).
Thông thường, bạn cần một new-session
lệnh để thực sự khởi động máy chủ, nhưng chúng tôi không muốn bất kỳ phiên nào, chỉ cần một máy chủ khởi tạo để truy vấn. Các start-server
lệnh không chỉ rằng: bắt đầu một máy chủ mà không tạo ra bất kỳ phiên.
tmux -f /dev/null -L temp start-server …
Bây giờ, chúng ta chỉ cần nối thêm lệnh Truy vấn của bạn ( list-keys
trong trường hợp này):
tmux -f /dev/null -L temp start-server \; list-keys
Lưu ý : dấu chấm phẩy cần được thoát hoặc trích dẫn để ngăn shell xử lý nó như một dấu tách lệnh shell vì chúng ta muốn nó là một dấu tách lệnh tmux .
Vì không có phiên nào để duy trì, máy chủ sẽ tự động thoát sau khi chạy xong list-keys
lệnh.
Vì vậy, bạn có thể sử dụng một lệnh như thế này để tạo ra số lượng lớn .tmux.reset.conf
mà không phải lo lắng về việc tạm thời xóa .tmux.conf
tệp của mình (để cho bạn chỉ nhìn thấy các ràng buộc mặc định) và không phải tắt bất kỳ máy chủ hiện có nào.
Nếu run-shell
lệnh được đồng bộ, bạn có thể nhúng một cuộc gọi như thế này vào tệp cấu hình của mình (bắt vào một tệp tạm thời mà sau đó bạn sẽ xử lý source-file
) thay vì có một tệp tĩnh (của bạn .tmux.reset.conf
). Điều đó sẽ cho phép bạn luôn sử dụng các ràng buộc mặc định từ phiên bản tmux hiện tại của bạn (các ràng buộc mặc định thỉnh thoảng thay đổi). Than ôi, việc hoàn thành run-shell
lệnh hiện không đồng bộ với các lệnh tiếp theo (các lệnh xuất hiện sau run-shell
lệnh thường sẽ chạy trước khi quá trình sinh ra bởi run-shell
đã có cơ hội kết thúc).