나는 코드를 작성할 때 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
답변1
허용된 답변의 코드가 유용하다고 생각했지만 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.
따라서 -p 대신 -l을 사용하면 원하는 효과를 얻을 수 있습니다. 전임자:
split-window -h -l 80
resize-pane
유사한 솔루션이 설명되어 있습니다.여기.
답변2
이런 걸 원하시나요?
파일에 추가하고 실행 가능하게 만듭니다 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"
답변3
이를 수행하는 쉬운 방법은 Cb M-4 또는 Cb: selectl main-vertical과 함께 기본 수직 레이아웃을 사용하는 것입니다. 이는 emacs용으로 설계되었으므로 왼쪽 창에 81개의 열이 있으므로 main-pane-width 옵션을 80으로 변경해야 합니다.
답변4
질문과 마지막 답변이 게시된 이후 상황이 변경되었습니다. tmux에는 기본 창의 너비를 고정하는 데 사용할 수 있는 후크가 있습니다.
예를 들어 다음 별칭을 사용합니다.
alias work-bftp="tmux attach -t work-bftp || tmux new -s work-bftp -d 'bash' \; set -g default-command bash \; split-window -h \; set-option -t work-bftp main-pane-width 80 \; selectl main-vertical \; set-hook -t work-bftp window-layout-changed 'selectl main-vertical;' \; attach;"
main-vertical
첫 번째 창에서 너비가 80열인 vim이 기본 창을 사용하는 레이아웃 기반 창을 만듭니다 . 이는 window-layout-changed
이벤트를 사용하여 원하는 크기로 창을 다시 그립니다.
나는 그것을 시도했고 이벤트에 대해서도 한동안 작동했지만 client-resized
어느 날 터미네이터/에뮬레이터 창 최대화 작업에 대한 작동을 멈췄습니다.
그러나 이 접근 방식의 한 가지 문제점은 접두사 z가 더 이상 첫 번째 창에서 작동하지 않는다는 것입니다.