如果我在寬屏幕顯示器上工作,我喜歡主要使用兩個窗格,並使用C-a Ca
在它們之間切換。如何綁定一個鍵切換到最後一個窗格,或者如果沒有窗格,最後一個窗口?
如果我在一個方形顯示器上工作,我將使用兩個窗口。我希望能夠在C-a C-a
之間切換,而不需要更改我的tmux.conf
。
如果我在寬屏幕顯示器上工作,我喜歡主要使用兩個窗格,並使用C-a Ca
在它們之間切換。如何綁定一個鍵切換到最後一個窗格,或者如果沒有窗格,最後一個窗口?
如果我在一個方形顯示器上工作,我將使用兩個窗口。我希望能夠在C-a C-a
之間切換,而不需要更改我的tmux.conf
。
如果你總是希望CA以
然後您可以使用if-shell
來計算活動窗口中的窗格數量,以決定在last-pane
和last-window
之間:
bind-key C-a if-shell 'test $(tmux list-panes | wc -l) -gt 1' 'last-pane' 'last-window'
在「寬」和「方」配置之間切換時,它仍然是「由您決定」重新排列窗格。通過break-pane
和join-pane
)。
在TMUX 1.8 if-shell
和run-shell
做格式的擴展,所以可以簡單的shell命令了一下:
bind-key C-a if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window'
我想建議以下(調整80你的兩個終端寬度來區分)
if-shell '[ "$COLUMNS" -gt 80 ]' 'bind-key C-a "select-window -t :.+"' 'bind-key C-a "next-window"'
但我要麼搞亂了語法,或COLUMNS
未在相關tmux
設置環境,因爲上面的shell表達式總是爲我評估爲false。
'如果-shell'和'運行shell'都在跑(從分支)服務器的上下文(而不是任何特定的會話或客戶端),所以他們不會有COLUMNS(甚至在std {in,out,err}上都沒有tty)。你可以通過如下方式獲得最近激活的客戶端的寬度:'tmux list-clients -F'#{client_activity}#{client_width}'| sort -rn |頭-1 | cut -d''-f' –
IIRC,'$ COLUMNS'是一個bash變量,而不是一個環境變量;所以你需要確保在你運行測試的時候封裝的外殼是bash。而且,即使是這樣,它也不一定會附加到用戶正在查看的同一個pty上(或者任何pty),同時按下鍵綁定。 – jpaugh
我不知道是否有一個不太麻煩的方式來測試當前窗口是否有多個窗格。它確實應該是那些tmux變量之一,比如'#{pane_count}',那麼我們可以使用它的'#{?}}'結構而不是分出一個shell,另一個tmux來做IPC,和'wc -l'。不幸的是,我找不到所有tmux變量的完整列表。我知道至少有一個沒有記錄的''{pane_current_command}''這很方便。 **更新**我找到了,它是'#{window_panes}',它是「窗口中的窗格數量」。完美 –
垃圾,那些條件thingies可能只適用於狀態字符串構建,而不是確定要運行的shell命令。儘管可以避免管道到'wc -l'。 –
@StevenLu:* tmux * 1.8支持'if-shell'(和'run-shell')格式的擴展,所以你可以在1.8中做到這一點:''''''''最後一個窗格最後一個窗口「。 –