다음과 같은 것을 사용하여 프로젝트의 공통 설정을 복원합니다.
setup_file=myproj.tmux
tmux new-session "tmux source-file $setup_file"
나는 일반적으로 새 세션을 시작하고 그 세션에서 명령을 받는 것이 $setup_file
새 셸에서 이러한 tmux 명령을 수동으로 실행하는 것과 동일하다고 생각하지만 그렇지 않습니다! 차이점은 소싱할 때 창 0에는 쉘이 생성되지 않는 것 같아서 neww
이 명령을 실행하면 창 1이 생성되지만 모든 것이 설정되면 창 0이 손실됩니다. 문제를 해결하기 위해 를 실행했는데 split-window
, 왜 이렇게까지 해야 하는지 이해가 되지 않습니다. 단서?
myproj.tmux
# window 0 - cli
rename-window 'cli';
split-window # not sure why this is needed to get a shell. Otherwise there is no window 0!
# window 1 - main window in the left pane and 3 minor windows in the right pane
neww
rename-window 'tools'
send-keys 'nvim' C-m # editor
split-window -h -p 40 # build window (webpack, etc)
split-window -v -p 80 # cli
split-window -v -p 50 # test runner?
select-pane -L; # select the left pane; nvim
답변1
하지만 모든 것이 설정되었을 때 창 0이 누락되었습니다.
의심스러운 것이 없으면 split-window
창 0의 창에서 실행되는 코드만 tmux source-file $setup_file
( $setup_file
원래 셸로 확장됨) 됩니다. 모든 것이 설정되면 이 명령이 종료되므로 유일한 창이 종료되므로 창이 종료됩니다.
상황이 달라질 거야
tmux new-session "tmux source-file '$setup_file'; '$SHELL'"
이 명령은 원래 명령보다 "더 잘" 인용되지만 여전히 올바르게 인용되지는 않습니다. Bash에서는 다음을 통해 올바른 인용을 얻을 수 있습니다 ${var@Q}
.
tmux new-session "tmux source-file ${setup_file@Q}; ${SHELL@Q}"