저는 개발을 위해 tmux를 사용하고 있으며 창에서 실행되는 작업과 자체 창에서 실행되는 다른 작업이 있습니다. 프로젝트 디렉토리의 기본 이름이 tmux 세션 이름이라는 규칙을 설정했습니다.
export SESSION_NAME="my-project-name"
tmux kill-session -t "$SESSION_NAME"
tmux new-session -s "$SESSION_NAME" \
"api.start --monitored" \; \
split-window "ui.start --monitored" \; \
select-layout tiled \; \
set-option -w remain-on-exit on \; \
set-option -w mouse on \; \
set-option -g mouse on \; \
bind-key -n C-c kill-session -t "$SESSION_NAME"
동일한 규칙으로 다른 프로젝트를 시작할 때를 제외하면 모든 것이 잘 작동하는 것 같습니다. 첫 번째 세션에서 Ctrl+c를 누르면 SESSION_NAME이 내가 원하는 것이 아닌 가장 최근의 tmux 생성 세션 중 하나라고 생각합니다.
답변1
게시한 코드 조각에서 $SESSION_NAME
셸은 각 모양을 확장하고 각 모양은 tmux
확장된 값을 명령줄 인수로 사용합니다.
(그렇지 않고 $SESSION_NAME
나중에 tmux 내에서 또는 tmux 내의 쉘 내에서 확장 하려는 경우에도 export SESSION_NAME="my-project-name"
아마도 헛된 일입니다.tmux
환경을 구축하는 방법. 이 update-environment
옵션이나 new-session -e …
명령이 유용할 수 있습니다. )
이는 다음 실행 $SESSION_NAME
에 포함됩니다 .bind-key -n C-c kill-session -t "$SESSION_NAME"
tmux
bind-key -n C-c kill-session -t my-project-name
그런 다음 다른 프로젝트의 경우 tmux 명령은 다음과 같습니다.
bind-key -n C-c kill-session -t different-name
중요한 것은 bind-key
단일 세션 자체에만 국한되지 않는다는 것입니다. bind-key -n C-c …
전체 tmux 서버의 + 동작을 변경합니다 . 귀하의 경우 마지막 작업이 이전 작업을 덮어쓴 다음 모든 세션에서 +를 덮어씁니다.Ctrlcbind-key
Ctrlckill-session -t different-name
각 세션마다 key-table
기본 키탭을 별도로 설정하는 것 외에 해당 옵션을 사용하여 기본 키탭을 다른 것으로 설정할 수 있을 것 같습니다 . root
각각의 새로운 키탭에서 C-c
다음을 설정할 수 있습니다.생각하다어쩌면 가능할 수도 있습니다.
내가 당신이라면 더 간단한 일을 할 것입니다. 나는 이렇게 할 것이다:
tmux bind-key -n C-c kill-session
kill-session
-t
목표 없이현재의세션이므로 이 바인딩은 원하는 작업을 수행하거나 다른 세션을 수행해야 my-project-name
합니다 different-name
.
솔직히 말해서 "다른 모임"은 나에게 너무 많은 것입니다. 나는 Ctrl+ c나에 관한 모든 것을 죽이고 싶지 않습니다 .범용세션. 나는 이 문제를 해결할 것이다:
이를 무시 하고
C-c
다른 키 입력을 "전역 SIGINT"로 선택한 다음 실수로 그 중 하나를 사용하십시오.또는 +를 "전역 SIGINT"로 Ctrl사용해야 하는 세션을 명시적으로 "표시"합니다 . c다음과 같이 보일 수 있습니다:
tmux new-session -e 'TMUX_GLOBAL_SIGINT=1' \; \ bind-key -n C-c if-shell '[ -n "$TMUX_GLOBAL_SIGINT" ]' kill-session 'send-keys C-c'
TMUX_GLOBAL_SIGINT
이제 환경에 null이 아닌 변수가 있는 모든 세션에서 해당 세션 Ctrl이 c종료됩니다. 각 세션에서TMUX_GLOBAL_SIGINT
비어 있거나 Ctrl+가 설정되지 않은 경우 c평소대로 작동합니다.노트:
tmux set-environment -u TMUX_GLOBAL_SIGINT
시작된 세션의 경우 설정을 사용하거나 변경할 수 있습니다tmux set-environment TMUX_GLOBAL_SIGINT 1
(-t
현재 세션일 필요는 없지만 특정 세션을 대상으로 하는 데 사용됨).tmux에서 시작된 쉘(또는 다른 프로그램)은 를 상속할 수 있습니다
TMUX_GLOBAL_SIGINT
. 실행되면tmux new-session …
( 등에 따라 ) tmux가 환경을 관리하는 방법을 명시적으로 읽고 이해update-environment
하지 않더라도 새 세션도 변수를 상속할 수 있습니다 .-e 'TMUX_GLOBAL_SIGINT=1'
man 1 tmux