我可以讓 Tmux 保持「前綴模式」直到我按下 Esc 鍵嗎?

我可以讓 Tmux 保持「前綴模式」直到我按下 Esc 鍵嗎?

與 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]}"

相關內容