
與 Vim 的模式類似,我希望 Tmux 保持在「前綴模式」(你實際上怎麼稱呼它?)直到我按下 Escape,這樣我就能夠做類似的事情
Prefix h j + +
代替
Prefix h Prefix j Prefix + Prefix +
不必擔心計時器或過多的和弦。
答案1
我將其發佈為問題並收到了這個答案:
您可以重新綁定所有鍵以新增
switch-client -Tprefix
到每個命令序列的末尾,但沒有自動方法可以執行此操作。
這裡的問題是,如果命令拋出錯誤,它將不起作用,但您可以透過使用來解決它
是的錯誤將取消命令序列,您可以使用 run-shell 來解決這個問題,例如
run "tmux mycmd; tmux switch-client -Tprefix"
但這可能會隱藏錯誤的顯示。
我目前的配置如下所示:
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
據我所知,tmux 對不同的綁定使用不同的上下文。若要指定在哪個上下文中使用綁定,請使用bind <key> -T <context>
,其中 prefix 是預設值。您可以使用 切換上下文switch-client -T <context>
,因此我們要做的就是在每個命令之後重新套用前綴。
這種方法的缺點是:
- 你必須在每個綁定上明確地執行此操作
- 如果發生錯誤,它將返回正常模式(例如,當只有一個會話正在運行時嘗試切換到下一個會話)
- 它會透過任何非綁定鍵退出,而不僅僅是 Esc。
獎金!您可以添加一個時髦的指示器,當您長時間處於前綴模式時,這非常有幫助,方法是使用類似的東西
set -g status-right "#{?client_prefix,#[reverse]● #[noreverse],#[reverse]○ #[noreverse]}"