기본적으로 tmux는 창 가장자리를 지나갑니다. 예를 들어 두 개의 창이 있다고 가정합니다 pane 1
. pane 2
당신이 그렇다고 가정하고, pane 1
당신이 이것을 한다면 Ctrl+b →, 당신은 입니다 pane 2
. 이 작업을 다시 수행하면 Ctrl+b →다시 들어갈 수 있습니다 pane 1
. 마지막 창에서 탐색할 때 아무데도 가지 않도록 해당 기능을 비활성화하려면 어떻게 해야 합니까?
답변1
이것은 약간 번거롭지만 충분할 수 있습니다. 버전 2.3부터 각 창 테두리의 x 및 y 좌표를 찾을 수 있습니다. 예를 들어, display -p #{pane_right}
80열 터미널의 오른쪽 가장자리에 있는 창의 경우 값은 79입니다. 다음 창으로 오른쪽으로 이동하는 명령을 실행하고 새 창의 pane_right
값이 39인 경우 왼쪽으로 이동한 것이므로 이전 창으로 다시 이동을 사용해야 합니다 select-pane -l
.
mytmux
대부분의 tmux 명령은 쉘 스크립트에서 실행할 수 있으므로 PATH에 다음 파일을 생성하고 실행 가능하게 만듭니다( chmod +x mytmux
).
#!/bin/bash
# https://unix.stackexchange.com/a/451473/119298
restrict(){
case $1 in
U) d=-U p=pane_top cmp=-gt ;;
D) d=-D p=pane_bottom cmp=-lt ;;
L) d=-L p=pane_left cmp=-gt ;;
R) d=-R p=pane_right cmp=-lt ;;
*) exit 1 ;;
esac
old=$(tmux display -p "#{$p}")
tmux select-pane "$d"
new=$(tmux display -p "#{$p}")
[ "$new" "$cmp" "$old" ] && tmux select-pane -l
exit 0
}
case $1 in
-restrict)shift
restrict "${1?direction}" ;;
esac
그런 다음 다음 바인딩을 설정하십시오 ~/.tmux.conf
.
bind-key -r -T prefix Up run-shell 'mytmux -restrict U'
bind-key -r -T prefix Down run-shell 'mytmux -restrict D'
bind-key -r -T prefix Left run-shell 'mytmux -restrict L'
bind-key -r -T prefix Right run-shell 'mytmux -restrict R'
예를 들어 여러 세션을 처리하려면 세션을 확장해야 합니다.
답변2
기본적으로 키는 PrefixArrow다음과 같이 바인딩됩니다.
bind-key -r -T prefix Up select-pane -U
bind-key -r -T prefix Down select-pane -D
bind-key -r -T prefix Left select-pane -L
bind-key -r -T prefix Right select-pane -R
이 select-pane
함수에는 "해당 방향의 마지막 창에 도달하면 반복하지 마세요"라고 알려주는 옵션이 없습니다.
실행 소스코드를 보면 select-pane
왼쪽/오른쪽, 위/아래 루프가 하드코딩되어 있는 것 같은데, 이런 식으로 실행되는 것을 막는 것이 쉽지 않다는 뜻입니다.