2014-03-05 40 views
3

我在一個窗口中運行幾個TMUX窗格已開始與語法,如:如何獲得非交互式tmux窗格的大小?

tmux split-window -h -l {dynamic value} tail -f somefile.txt 
tmux split-window -v -l {dynamic value} tail -f someotherfile.txt 
tmux split-window -h -l {dynamic value} nc -l -p {random port} 

當我使用這個腳本來創建新的窗格,我需要更新我的腳本與每個大小的數組「窗口」(窗格)。

如果tmux窗格包含交互式shell,我可以在其中運行tput cols和tput行以獲取大小。我檢查了tmux手冊頁,但沒有看到我正在查找的命令。

回答

2

如果你知道一個窗格的ID(例如%24)或它的名稱(例如session_name:win_idx.pane_idx;見target-pane手冊頁),那麼你可以使用display-message -p查詢尺寸:

tmux display-message -pt "$pane" -F '#{pane_width}x#{pane_height}' 

如果你不這樣做已經有辦法來命名要窗格,那麼你就可以收集窗格ID作爲您使用-P選項與-F選項一起將它們分割關閉:

pane_a=$(tmux split-window -PF '#{pane_id}' -hl "$dynamic_value" 'tail -f somefile.txt') 
⋮ # create other panes 
pane_a_width=$(tmux display-message -pt "$pane_a" -F '#{pane_width}') 

如果您想了解窗口中的所有窗格,則可以使用list-panes以及窗口的ID(例如, @5)或名稱(如session_name.win_idx;見target-window手冊頁):

tmux list-panes -t "$window" -F '#{pane_id} #{pane_width}x#{pane_height} #{session_name}:#{window_index}.#{pane_index}' 

一些選項和格式說明並非適用於舊版本的TMUX,但通常變通方法(取決於你的版本的年齡)。

+0

太棒了,非常感謝你:)完美的作品! – nfarrar