나는tmux
특정 명령으로 연 창입니다. 기본 창 대신 동일한 명령을 실행하는 새 창으로 창을 분할할 수 있습니까?
요점은 원래 명령을 기억하고 다시 입력하지 않아도 된다는 것입니다.
답변1
#{pane_start_command}
현재 창을 시작하는 데 사용되는 명령에 액세스하는 방법입니다. 이 기능은 v1.7(2012년 10월)부터 사용할 수 있습니다.
bind-key S run-shell "tmux split-window \"#{pane_start_command}\""
문제에 대한 해결책은 #{pane_start_command}
.( tmux
버전 >= 1.9(02/2014))을 사용하세요.
버전 1.7 >= X < 1.9의 경우 파일에서 다음과 같은 것을 사용할 수 있습니다 ~/tmux.conf
.
bind-key S run-shell "tmux split-window \"$(tmux display-message -p '#{pane_start_command}')\""
display-message
명령 추출을 대체했습니다#{pane_start_command}
.- 명령은 인수로 제공됩니다
tmux split-window
.
pane_start_command
창이 명령 문자열 없이 시작되고 아무것도 없으면 빈 문자열이 됩니다. 그러나 빈 명령 문자열이 주어지면 일반 로그인 쉘이 시작되므로 default-command
괜찮습니다 .split-window
답변2
찾고 있는 명령은 다음 과 같습니다 split-window
.man tmux
창 분할[-dhvP] [-c 시작 디렉터리] [-l 크기 | -p 백분율] [-t 대상 창] [셸 명령] [-F 형식] (별칭: Splitw)
대상 창을 분할하여 새 창을 만듭니다. h는 수평으로 분할되고, -va는 수직으로 분할됩니다. 지정하지 않으면 -v가 가정됩니다. -l 및 -p 옵션은 각각 행(세로 분할의 경우), 셀(가로 분할의 경우) 또는 백분율로 새 창의 크기를 지정합니다. 다른 모든 옵션은 new-window 명령과 의미가 동일합니다.
Ctrlb:명령 모드로 들어가서 프롬프트에 다음을 입력하여 현재 창에서 사용할 수 있습니다 .
splitw -v -p 50 'your command'
현재 창이 분할됩니다.V세로로 반으로 줄임(50피ercent) 거기에서 명령을 실행하세요.
이 명령을 자주 사용하는 경우 언제든지 키 시퀀스에 바인딩할 수 있습니다.
bind '~' split-window -v -p 50 'htop'
답변3
이것이 tmux 버전 간에 변경되는지는 확실하지 않지만 나에게는(tmux 3.0a) 시작 명령 없이 창에서 실행하면 허용된 답변이 완전히 빈 창을 여는 반면 새 쉘은 아니라는 것을 발견했습니다. 이것은 나에게 효과적입니다.
bind C run-shell "CMD=\"#{pane_start_command}\" ; tmux split-window -v \${CMD:+ -c \"#{pane_current_path}\" \"\$CMD\"}"
이는 다음을 활용합니다.대체 값 대체인수가 비어 있으면 인수가 완전히 삭제됩니다(이 접근 방식에 대한 답변을 주신 John Kugelman에게 감사드립니다.).
첨부된 -c \"#{pane_current_path}\"
명령은 현재 창과 동일한 디렉터리에서 명령을 실행하는데, 이는 내 작업 흐름에 중요합니다. 명령을 실행하는 창뿐만 아니라 모든 새 창에 스니펫을 표시하려면 스니펫을 둘러싸는 \${...}
.