tmux 세션의 마지막 터미널을 종료하면 자동으로 tmux가 닫히고 상위 터미널로 돌아갑니다. 닫는 대신 tmux를 이미 실행 중인 다른 세션으로 전환할 수 있습니까?
TRxxx, 이메일, 스크래치 등 내가 작업하는 모든 작업에 대해 새 명명된 세션을 만들고 작업 중 하나를 완료하면 각 터미널에서 종료를 실행하여 모든 터미널을 닫습니다. 세션의 마지막 터미널에서 종료를 실행하면 tmux가 상위 터미널로 돌아가지만 다시 연결할 필요가 없도록 열려 있는 다른 세션 중 하나로 전환하도록 할 수 있습니까?
이 질문은 "와 유사합니다.하나의 tmux 세션을 종료하고 다른 tmux 세션을 선택하십시오."하지만 창을 닫는 대신 종료를 사용하여 터미널을 멋지게 닫고 싶습니다.
답변1
나는 이것을 내 것에 추가했습니다 ~/.tmux.conf
:
set-option -g detach-on-destroy off
세션의 마지막 셸을 삭제하면 다른 활성 세션으로 전환됩니다. 모든 세션이 종료된 후 tmux
종료하세요.
답변2
내가 얻은 가장 가까운 것은 내가 작성한 tmux 함수였습니다. 나는 보통 Ctrl+를 클릭하여 셸을 종료하므로 +를 클릭하면 세션을 종료하고 전환하도록 D프로그래밍했습니다 . tmux
다음을 입력하세요.[PREFIX]
CtrlD.tmux.conf
bind C-d run-shell " \
if [ #{session_windows} -eq 1 ] && \
[ #{window_panes} -eq 1 ] && \
[ #{pane_current_command} = 'bash' ]; then \
if [ \$(tmux list-sessions | wc -l) -ge 2 ]; then \
tmux switch-client -ln; \
fi; tmux kill-session -t \"#S\"; \
else \
tmux display-message \"Ignoring kill session...\"; \
fi; \
"
현재 세션에 다른 명령을 실행하지 않는 셸만 있는 경우 [PREFIX]
Ctrl+를 눌러 현재 세션을 종료하세요. D가능하다면 다른 세션으로 전환됩니다. 저는 bash 쉘을 사용하므로 이를 사용 중인 쉘로 변경해야 할 수도 있습니다.
ps: 만약을 대비해서 저는 현재 tmux 1.9a를 사용하고 있습니다.
답변3
다음 줄을 추가 .bashrc
하고 시도해 보세요.
if which tmux 2>&1 >/dev/null
then
# start a new session if not exist
test -z ${TMUX} && tmux
# when quitting tmux, try to attach to other session
while test -z ${TMUX}; do
tmux attach || break
done
fi