Tôi có thể đặt Tmux ở chế độ 'tiền tố' cho đến khi tôi nhấn thoát không?


4

Tương tự như các chế độ của Vim, tôi muốn Tmux ở trong 'chế độ tiền tố' (bạn thực sự gọi nó là gì?) Cho đến khi tôi nhấn Escape, để tôi có thể làm gì đó như

Prefix h j + +

thay vì

Prefix h Prefix j Prefix + Prefix +

và không phải lo lắng về thời gian hoặc quá nhiều từ ngữ.

Câu trả lời:


2

Tôi đã đăng bài này như một vấn đề và nhận được câu trả lời này:

Bạn có thể rebind tất cả các khóa của bạn để thêm switch-client -Tprefixvào cuối mỗi chuỗi lệnh, nhưng không có cách nào tự động để làm điều này.

Vấn đề ở đây là nó sẽ không hoạt động nếu lệnh ném lỗi, nhưng bạn có thể làm việc xung quanh nó bằng cách sử dụng

Có lỗi sẽ hủy chuỗi lệnh bạn có thể khắc phục bằng cách sử dụng run-shell, vd

run "tmux mycmd; tmux switch-client -Tprefix"

Nhưng điều đó có thể che giấu lỗi được hiển thị.

Cấu hình hiện tại của tôi trông như thế này:

bind c new-window \; switch-client -T prefix
bind . command-prompt \; switch-client -T prefix
bind , copy-mode \; switch-client -T prefix

# Vim style splits
bind s split-window -v \; switch-client -T prefix
bind v split-window -h \; switch-client -T prefix

# Double tab to cycle panes
bind C-a select-pane -t :.+ \; switch-client -T prefix

Từ những gì tôi thu thập được, tmux sử dụng các bối cảnh khác nhau cho các ràng buộc khác nhau. Để chỉ định trong bối cảnh sử dụng liên kết, bạn sử dụng bind <key> -T <context>, trong đó tiền tố là mặc định. Bạn có thể chuyển ngữ cảnh bằng cách sử dụng switch-client -T <context>, vì vậy những gì chúng tôi làm là áp dụng lại tiền tố sau mỗi lệnh.

Hạn chế của phương pháp này là:

  • bạn sẽ phải làm điều đó một cách rõ ràng trên mọi ràng buộc
  • nó sẽ trở về chế độ bình thường nếu có bất kỳ lỗi nào xảy ra (ví dụ: cố gắng chuyển sang phiên tiếp theo khi chỉ có một phiên chạy)
  • nó sẽ thoát trên bất kỳ khóa không ràng buộc nào, không chỉ Esc.

Thêm! Bạn có thể thêm một chỉ báo thú vị, khá hữu ích khi bạn ở chế độ tiền tố trong một thời gian dài hơn bằng cách sử dụng một cái gì đó như

set -g status-right "#{?client_prefix,#[reverse]● #[noreverse],#[reverse]○ #[noreverse]}"

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.