choose-session
( ) 와 비슷한 Tmux 명령을 원 PREFIX s
하지만 다른 세션을 선택하면 현재 세션이 종료됩니다.
이상적으로 이 명령은 현재 세션이 다른 곳에 연결되어 있는 경우 분리하지만 이것이 유일한 연결인 경우 세션을 종료합니다. 이는 다음을 통해 발견할 수 있습니다.tmux display -p '#{session_many_attached}'
하나 있다유제하지만 꽤 오래되었고 반대 방식(쿼리, 종료, 조인)으로 질문을 합니다.
답변1
이 바인딩은 PREFIX C-s
세션을 선택하고 해당 세션으로 전환한 다음 이전 세션을 종료합니다.
bind-key C-s \
if-shell "(($(tmux display -p '#{session_many_attached}') > 0))" \
choose-session \
"run-shell \"tmux choose-session \\\"switch-client -t '%%'; kill-session -t '$(tmux display -p '#S')'\\\"\""
나는 쉘 표현식을 사용했습니다(쉘을 사용하지 않는 또 다른 답변이 좋을 것입니다!). 먼저 Tmux를 사용하여 if-shell
연결된 클라이언트가 여러 개 있는지 확인합니다. 그렇다면 표준 choose-session
명령을 호출합니다.
그러나 이것이 세션에 연결된 유일한 클라이언트인 경우 사용자 정의 명령을 전달하지만 에 전달하는 명령줄을 작성할 수 있도록 choose-session
셸에서( 사용하여) 이 작업을 수행합니다 .run-shell
choose-session
명령줄은 다음 두 가지 명령으로 구성됩니다.
switch-client -t '%%'
이는choose-session
기본적으로 사용됩니다(man tmux
설명은 참고자료 참조).kill-session -t '$(tmux display -p '#S')'
먼저 서브 쉘을 사용하여 이름을 얻으십시오현재의세션(아직 삭제되지 않음)을 매개변수로 에 전달합니다kill-session
.
최종 명령이 작동하려면 많은 이스케이프가 필요합니다. 여기에는 if-shell
쉘 명령 하나와 두 개의 tmux 명령이라는 세 가지 매개변수가 필요합니다. 공백이 포함된 경우에는 따옴표로 묶어야 합니다. 그러므로 세 번째 진술 run-shell...
은 매우 나쁩니다!
(tmux 2.3)