tmux 창을 80 열 정도로 넓게 만듭니다.


12

코드를 작성할 때 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

경우에 따라 80을 지정한 열까지 단락을 채우는 편집기를 사용하는 것이 좋습니다. emacs를 확인하십시오 .
Luis

1
vim 7.3+에는 colorcolumnN 번째 문자에 대체 배경 열을 추가 하는 설정이 있습니다. PS> 나는 결코 어두운쪽으로 돌지 않을 것이다;)
JKirchartz

답변:


5

이게 당신이 원하는 것인가요?

파일에 추가하고에 의해 실행 가능하게하십시오 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의 행 번호를 고려해야합니다.


어쩌면 조금 더 멋지게 편집하십시오 (별로 혼란스럽지 않습니다) 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"


이것은 완벽하게 작동하는 것처럼 보입니다. 작업 공간을로드 할 때 자동으로 실행할 수 있습니까? (또한 좀 더 많은 정보로 내 질문을 업데이트했습니다)
JKirchartz

@JKirchartz : 소스 명령으로 업데이트되었습니다. (괜찮은 도구를 사용하는 사람들을 볼 수있는 좋은 btw.;)) 사용 screen하고 있으며 최근에 나 자신을 강요하려고 시도했습니다 tmux.
Runium

그래, 나는 vim split을 알아 내려고 노력하고 있었고, 나는 워크 플로우에 만족하지 않고, screen찾기 전에 하루를 체크 아웃 tmux했다. 나는 그것을 좋아한다. vim과 비슷하게 설정하면 바람이 불고 있습니다.
JKirchartz

방금 버그를 발견했습니다. $ pane을 정의하지 않고 0으로 대체하여 완벽하게 작동했습니다. 감사합니다!
JKirchartz

@ JKirchartz : 아, 감사합니다. 나는 몇 가지 코드에서 복사 $pane선택적 인수 2와 내가 결정하려 곳에 창을 사용 "R"또는 이에 따라 "L"(/ 중앙 / 오른쪽 왼쪽)하지만 어려운 것으로 판명 된 위치 감지 할 수 있습니다. 수정했습니다.
Runium

8

허용 된 답변의 코드가 유용하다는 것을 알았지 만 tmux 1.8을 사용하고 있으며 내장 기능으로 보입니다. split-window의 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 insead -p를 사용하면 효과가 나타납니다 당신이 찾고있는. 전의:

split-window -h -l 80

비슷한 솔루션 resize-pane여기 에 설명되어 있습니다 .


0

이 작업을 수행하는 쉬운 방법은 Cb M-4 또는 Cb와 함께 기본 세로 레이아웃을 사용하는 것입니다. selectl main-vertical. emacs 용으로 설계되었으므로 왼쪽 분할 창이 81 열이므로 기본 너비 옵션을 80으로 변경해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.