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
)두 개의 창을 바꿉니다. [...]는
-d
tmux에게 활성 창을 변경하지 않도록 지시합니다.
-s
생략되고 표시된 창이 있는 경우 ( 참조select-pane -m
) 현재 창이 아닌 표시된 창이 사용됩니다.
훨씬 더 좋습니다. -s
및가 -t
모두 생략되고 표시된 창이 있는 경우 표시된 창과 현재 창이 교체됩니다. 주어진 시간에 전체 tmux 서버 내에는 최대 하나의 표시된 창이 있을 수 있습니다.
이제 창 0의 셸을 이 새로운 분할 창에 어떻게 로드할 수 있나요?
창 0으로 이동하여 이동하려는 창을 표시합니다(예제에서는 유일한 창입니다). RMB(마우스가 지원되는 경우) 또는 prefix m(기본값 prefix은 Ctrl+ ) 를 사용하여 수행합니다 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 ":
- 이동하려는 창을 표시합니다.
분할하려는 창을 분할합니다.
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
있습니다 . 각 창의 고유 식별자는 창의 콘텐츠(프로세스)에 "부착"되어 함께 "이동"합니다. 접두사가 붙지 않은 창 식별자는 총 창 수와 창 내 배치에 따라 달라집니다.%0
0:1.1
%2
0:0.0
rename-session
세션( ) 및 창( ) 의 이름을 지정할 수 있습니다 rename-window
. 이렇게 하면 창을 더 쉽게 식별할 수 있습니다 session:window.pane
.
둘 이상의 tmux 서버를 실행할 수 있습니다. 서버는 소켓 경로( -L
옵션) 또는 소켓 이름( -S
)으로 식별됩니다. 기본 이름은 입니다 default
. tmux 내에서 이러한 옵션 없이 호출하면 tmux
올바른 서버를 찾을 것입니다(환경 TMUX
변수를 통해). tmux
tmux 외부에서 이러한 옵션 없이 호출하면 다음과 같습니다 tmux -S default
. 기본이 아닌 tmux 서버에 속하는 두 개의 창을 교체할 수 있습니다. 예:
tmux -S other swapp -s 0:1.1 -t 0:0.0
Tmux는 서버 간 창 교환을 지원하지 않습니다. 두 대의 서버를 사용하는 이유는 서버가 분리되어 있다는 것입니다. 두 개의 반 분리된 tmux 엔터티 간에 창을 교환해야 하는 경우 이러한 엔터티는 단일 tmux 서버 내의 세션이어야 합니다. 여러 세션 간에 창을 교환할 수 있습니다.
다른 tmux 서버에서 실행 중인 프로세스를 "하이재킹"해야 하는 경우 다음을 사용하세요.reptyr
. 이 도구는 tmux와 완전히 독립적입니다.