동일한 초기 명령을 사용하여 tmux 창을 새 tmux 창으로 분할합니다.

동일한 초기 명령을 사용하여 tmux 창을 새 tmux 창으로 분할합니다.

나는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세로로 반으로 줄임(50ercent) 거기에서 명령을 실행하세요.

이 명령을 자주 사용하는 경우 언제든지 키 시퀀스에 바인딩할 수 있습니다.

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}\"명령은 현재 창과 동일한 디렉터리에서 명령을 실행하는데, 이는 내 작업 흐름에 중요합니다. 명령을 실행하는 창뿐만 아니라 모든 새 창에 스니펫을 표시하려면 스니펫을 둘러싸는 \${...}.

관련 정보