我在编写代码时尝试遵循 80 列规则,我当前的 tmux 设置是水平拆分 50/50。我喜欢在左侧窗格中使用 vim,而在右侧窗格中我有一个 75/25 的分割,我可以在其中运行其他东西。
在我的侧面显示器上,50% 是 76 列宽,但在我的笔记本电脑显示器上,它是 123 列宽。
我想最大化其他命令的空间,有没有办法在我启动工作区时将其设置为恰好 80 列(左右)?
我目前正在设置我的工作区:
bind C-w source-file ~/dotfiles/scripts/tmux_work_layout
Run Code Online (Sandbox Code Playgroud)
该文件包含:
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
Run Code Online (Sandbox Code Playgroud)
小智 9
我发现接受的答案的代码很有用,但是,我使用的是 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
Run Code Online (Sandbox Code Playgroud)
你想要这样的东西吗?
添加到文件并通过chmod +x filename. 通过例如调用
./sizetmux # Default hardcoded size
./sizetmux 85 # Specify width
Run Code Online (Sandbox Code Playgroud)
要从源文件运行它:
if-shell /path/to/script/sizetmux 80
Run Code Online (Sandbox Code Playgroud)
代码:
#!/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
Run Code Online (Sandbox Code Playgroud)
还必须考虑例如 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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5682 次 |
| 最近记录: |