Tmux
使 tmux 窗格 80(左右)列寬
我在編寫程式碼時嘗試遵循 80 列規則,我目前的 tmux 設置水平拆分為 50/50。我喜歡在左側窗格中使用 vim,而在右側窗格中我有 75/25 的分割,我可以在其中執行其他東西。
在我的側面顯示器上,50% 是 76 列寬,但在我筆記型電腦的顯示器上,它是 123 列寬。
我想為其他命令最大化房地產,當我啟動我的工作區時,有沒有辦法將它設置為正好 80 列(左右)?
我目前正在設置我的工作區:
bind C-w source-file ~/dotfiles/scripts/tmux_work_layout
該文件包含:
selectp -t 0 # Select pane 0 splitw -h -p 50 # Split pane 0 vertically by 50% selectp -t 1 # Select pane 1 splitw -v -p 25 # Split pane 1 horizontally by 25% selectp -t 0 # Select pane 0
你想要這樣的東西嗎?
添加到文件並通過
chmod +x filename
. 打電話給例如./sizetmux # Default hardcoded size ./sizetmux 85 # Specify width
要從源文件執行它:
if-shell /path/to/script/sizetmux 80
程式碼:
#!/bin/bash # Wanted pane width 0 - default 80, or pass argument 1 as wanted width pw0=80 [[ "$1" =~ ^[0-9]+$ ]] && pw0="$1" # This could be done nicer, but, anyhow: getting current width of pane 0 pw0_cur_w=$(tmux list-panes | awk -F"[ x:\\\[\\\]]+" '/^0:/{print $2}') # Resize according to current width if [[ "$pw0_cur_w" -eq "$pw0" ]]; then echo "OK $pw0" elif [[ "$pw0_cur_w" -gt "$pw0" ]]; then ((w = pw0_cur_w - pw0)) echo "$w less" tmux resize-pane -L -t 0 "$w" elif [[ "$pw0_cur_w" -lt "$pw0" ]]; then ((w = pw0 - pw0_cur_w)) echo "$w more" tmux resize-pane -R -t 0 "$w" fi
還必須考慮例如 vim 中的行號,所以可能是 85?
編輯可能更好一點(不是那麼混亂)(之後
pw0_cur_w=$(tm ...
((w = pw0_cur_w - pw0)) if [[ "$w" -ge 0 ]]; then dir="L" echo "$w less" else dir="R" ((w *= -1)) echo "$w more" fi [[ "$w" -gt "0" ]] && tmux resize-pane -"$dir" -t 0 "$w"
我發現接受答案的程式碼很有用,但是,我使用的是 tmux 1.8,這似乎是一個內置的功能。從拆分視窗下的 tmux 手冊頁:
The -l and -p options specify the size of the new pane in lines (for vertical split) or in cells (for horizontal split), or as a percentage, respectively.
所以,只需使用 -l insead of -p 應該有效果你正在尋找。前任:split-window -h -l 80
這裡
resize-pane
描述了一個類似的解決方案。