tmux 세션에서 마지막 터미널을 종료하면 다른 터미널로 전환 할 수 있습니까?


12

tmux 세션에서 마지막 터미널을 종료하면 tmux가 자동으로 닫히고 상위 터미널로 돌아갑니다. 대신 tmux를 닫는 대신 이미 실행중인 다른 세션으로 전환 할 수 있습니까?

TRxxx, 전자 메일, 스크래치 등과 같이 작업하는 모든 작업에 대해 새 명명 된 세션을 만들고 그 중 하나를 완료하면 모든 종료를 실행하여 모든 터미널을 닫습니다. 세션의 마지막 터미널에서 exit를 실행하면 tmux가 부모 터미널로 돌아가지만 대신 열린 다른 세션 중 하나로 전환하여 다시 연결할 필요가 없습니까?

이 질문은 " tmux 세션을 종료하고 다른 tmux 세션을 선택하십시오 "와 비슷 하지만 창을 종료하는 대신 exit를 사용하여 터미널을 닫고 싶습니다.

답변:


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 쉘을 사용하므로 사용중인 것으로 변경해야 할 수도 있습니다.

추신 : 중요한 경우, 나는 현재 tmux 1.9a를 사용하고 있습니다.


29

나는 이것을 내 추가했다 ~/.tmux.conf:

set-option -g detach-on-destroy off

세션에서 마지막 셸을 삭제하면 다른 활성 세션으로 전환됩니다. 모든 세션이 종료되면 tmux종료합니다.


4
정답은 이것으로 업데이트되어야합니다
cviejo

질문의 포스터를 탄원하십시오.
RichN

tmux는 기존 세션을 분리했다가 다시 연결할 때 해당 설정을 업데이트하지 않습니다. tmux 서버를 다시 시작해야 효과가 있습니다.
nyi

2

다음 줄을 추가 .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

1
거의 원하는 것이지만 tmux 내부에서 나가는 경우에만 실행되도록 변경할 수 있습니까? 이 스크립트는 새 터미널을 열 때마다 기존 tmux 세션에 연결됩니다. 로컬 물건에 대한 tmux 세션을 시도한 다음 ssh : 새 컴퓨터를 열어 다른 터미널에 연결하면 중첩 된 것을 피하기 위해 별도의 tmux 세션이 생깁니다.
David Holm

아니요,이 스크립트는 기존 터미널에 연결하지 않고 새 터미널을 열 때마다 새 tmux 세션을 시작합니다. 자세한 내용을 제공 할 수 있습니까? "tmux 내부"란 무엇입니까?
cuonglm

1
세션 X와 Y가 있는데, 여기서 Y에는 터미널이 하나만 열려 있습니다. Y의 마지막 터미널에서 'exit'을 실행하면 세션이 종료됩니다. 이 경우 tmux를 종료하지 않고 세션 X로 전환하고 싶습니다. 그러나 새 터미널을 시작할 때마다 tmux 세션을 연결하거나 생성하고 싶지 않습니다.
David Holm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.