다른 창에서 tmux의 현재 분할 창으로 터미널 로드

다른 창에서 tmux의 현재 분할 창으로 터미널 로드

GNU 화면에서는 주어진 분할 내의 모든 창 번호로 전환할 수 있습니다. 예를 들어:

  • screen실행하려면 입력하세요 .
  • Ctrl+를 눌러 a c새 창을 만듭니다. 이제 두 개의 창이 있습니다: 창 0과 창 1. 현재 창은 이제 창 1입니다.
  • Ctrl+ a Shift+를 눌러 s새 분할을 만듭니다.
  • Ctrl+를 눌러 a Tab새 분할로 이동합니다.
  • 이 새로운 분할에서 창 0을 로드하려면 Ctrl+를 누르세요 .0

Tmux에서 비슷한 작업을 어떻게 수행할 수 있나요? 이것이 내가 지금까지 가지고 있는 것입니다:

  • tmux실행하려면 입력하세요 .
  • Ctrl+를 눌러 b c새 창을 만듭니다. 이제 두 개의 창이 있습니다: 창 0과 창 1. 현재 창은 창 1입니다.
  • Ctrl+를 눌러 b "새 분할 창을 만듭니다. 현재 창은 이제 새로운 분할 창입니다.
  • 이제 창 0의 셸을 이 새로운 분할 창에 어떻게 로드할 수 있나요?

tmux에서 화면의 이러한 동작을 시뮬레이션하는 방법이 있습니까?

답변1

Tmux는 두 개의 다른 창에 동일한 창을 표시하는 것을 지원하지 않으며 동일한 창에 동일한 창을 두 번 표시하는 것을 지원하지 않습니다. 원래 세션에서 링크를 해제하지 않고도 전체 창을 세션에 연결할 수 있습니다. 또는 다른 창에 창을 배치할 수 있지만 이렇게 하면 원래 창에서 창이 제거됩니다.

귀하의 예에서는 원하는 창의 위치를 ​​유지하는 창을 이미 만들었습니다. 이 경우 tmux 명령을 사용하여 두 창을 바꿀 수 있습니다 swap-pane. 에서 man 1 tmux:

swap-pane [-dDU] [-s src-pane] [-t dst-pane]
(별칭: swapp)

두 개의 창을 바꿉니다. [...]는 -dtmux에게 활성 창을 변경하지 않도록 지시합니다.

-s생략되고 표시된 창이 있는 경우 ( 참조 select-pane -m) 현재 창이 아닌 표시된 창이 사용됩니다.

훨씬 더 좋습니다. -s및가 -t모두 생략되고 표시된 창이 있는 경우 표시된 창과 현재 창이 교체됩니다. 주어진 시간에 전체 tmux 서버 내에는 최대 하나의 표시된 창이 있을 수 있습니다.

이제 창 0의 셸을 이 새로운 분할 창에 어떻게 로드할 수 있나요?

창 0으로 이동하여 이동하려는 창을 표시합니다(예제에서는 유일한 창입니다). RMB(마우스가 지원되는 경우) 또는 prefix m(기본값 prefixCtrl+ ) 를 사용하여 수행합니다 b. 새 창으로 다시 이동하여 다음을 호출합니다.

tmux swapp

호출한 셸은 tmux swapp자동으로 삭제되지 않으며 이제 표시된 창이 있던 창 0에 있습니다. 귀하의 예에서는 이 셸 자체가 필요하지 않고 새 창만 필요한 것 같습니다. 그렇다면 tmux swapp && exit대신 고려해 보세요. 표시된 창이 없는 경우(또는 현재 창에 표시된 경우) tmux swapp사실상 아무 작업도 수행되지 않는다는 점을 명심하세요. 그러한 경우에는 tmux swapp && exit쉘을 종료합니다.

대안적으로,대신에새 분할 창을 생성하면 원하는 창을 한 단계로 현재 창으로 이동할 수 있습니다.

join-pane [-bdhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
(별칭: joinp)

와 비슷 split-window하지만 분할하여 새 창을 만드는 대신 dst-pane분할하여 src-pane공간으로 이동합니다. […]

-s생략되고 표시된 창이 있는 경우 ( select-pane 참조 -m) 현재 창 대신 표시된 창이 사용됩니다.

그래서 대신 prefix ":

  1. 이동하려는 창을 표시합니다.
  2. 분할하려는 창을 분할합니다.

    • tmux joinp -v거기의 쉘에서 호출 되거나 ;
    • 또는 prefix : joinp -v Enter; 특히 이는 분할하려는 창에 유휴 셸이 없을 때 유용합니다(그러나 먼저 창을 현재 창으로 만드는 것을 잊지 마세요).

메소드를 사용하여 다른 tmux 명령을 prefix :호출할 수 있습니다 .swapp

아래에는 tmux 외부에서 창을 조작하는 방법에 대한 몇 가지 참고 사항이 있습니다. 예제 tmux swapp에서는 유사하게 호출할 수 있습니다 tmux joinp.


swap-pane교환할 수 있게 해준다어느tmux 서버 내의 두 개의 창. tmux swapp에서도 달릴 수 있습니다.밖의교체하려는 두 개의 창을 처리하는 방법을 알고 있는 경우 창을 수동으로 표시하고 변경하지 않고도 tmux에서 사용할 수 있습니다. 다음과 같을 수 있습니다:

tmux swapp -s 0:1.1 -t 0:0.0

형식은 입니다 session:window.pane. 설명하는 설명서를 참조하세요 target-pane. 이 숫자는 "상대적"입니다(적어도 부분적으로 :window.pane는 숫자가 확실하지 않습니다 session). 0:0.0로 교체한 후 첫 번째 창은 0:1.1가 됩니다 0:1.1. 반면에 tmux 세션, 창 및 창에는 고유한 속성이 있습니다.고유한식별자( 각각 $, @및 접두사가 붙음 %) 귀하의 경우 명령은 다음과 같습니다.

tmux swapp -s %2 -t %0

그러나 이전 창은 실제로 %0에 있었고 0:0.0새 창은 %2에 있었다면 이제 각각 에 및 에 0:1.1있습니다 . 각 창의 고유 식별자는 창의 콘텐츠(프로세스)에 "부착"되어 함께 "이동"합니다. 접두사가 붙지 않은 창 식별자는 총 창 수와 창 내 배치에 따라 달라집니다.%00:1.1%20:0.0

rename-session세션( ) 및 창( ) 의 이름을 지정할 수 있습니다 rename-window. 이렇게 하면 창을 더 쉽게 식별할 수 있습니다 session:window.pane.


둘 이상의 tmux 서버를 실행할 수 있습니다. 서버는 소켓 경로( -L옵션) 또는 소켓 이름( -S)으로 식별됩니다. 기본 이름은 입니다 default. tmux 내에서 이러한 옵션 없이 호출하면 tmux올바른 서버를 찾을 것입니다(환경 TMUX변수를 통해). tmuxtmux 외부에서 이러한 옵션 없이 호출하면 다음과 같습니다 tmux -S default. 기본이 아닌 tmux 서버에 속하는 두 개의 창을 교체할 수 있습니다. 예:

tmux -S other swapp -s 0:1.1 -t 0:0.0

Tmux는 서버 간 창 교환을 지원하지 않습니다. 두 대의 서버를 사용하는 이유는 서버가 분리되어 있다는 것입니다. 두 개의 반 분리된 tmux 엔터티 간에 창을 교환해야 하는 경우 이러한 엔터티는 단일 tmux 서버 내의 세션이어야 합니다. 여러 세션 간에 창을 교환할 수 있습니다.

다른 tmux 서버에서 실행 중인 프로세스를 "하이재킹"해야 하는 경우 다음을 사용하세요.reptyr. 이 도구는 tmux와 완전히 독립적입니다.

관련 정보