tmux 창을 창으로 이동


228

여러 개의 창이있을 때 tmux 에서 기존 창을 다른 창으로 옮기려면 어떻게해야 합니까?

화면 에서 왔습니다 . 창으로 전환 한 다음 원하는 창에 도달 할 때까지 창을 전환 할 수 있습니다. tmux 는 이것을 허용하지 않는 것 같습니다.

답변:


209

이를 수행하는 명령은 join-panetmux 1.4에 있습니다.

join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]  
    (alias: joinp)
    Like split-window, but instead of splitting dst-pane and creating
    a new pane, split it and move src-pane into the space.  This can
    be used to reverse break-pane.

이를 단순화하기 위해 다음과 같은 바인딩 .tmux.conf을 사용합니다.

# pane movement
bind-key j command-prompt -p "join pane from:"  "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:"  "join-pane -t '%%'"

첫 번째는 대상 창에서 창을 가져 와서 현재 창에 연결하고 두 번째는 그 반대로 진행합니다.

그런 다음 세션 내에서 다음을 실행하여 tmux 세션을 다시로드 할 수 있습니다.

$ tmux source-file ~/.tmux.conf

이 방법을 시도하고 있지만 코드를 .tmux.conf 파일에 넣고 Ctrl-b, j를 수행하면 아무 일도 일어나지 않는 것 같습니다.
mrlanrat

2
각에서 몇 창에 적어도 2 개 개폐 가능한 창문이 필요합니다 다음 공격 Prefix+s프롬프트 창에 이름을 입력 하는 창에 창을 보내 ...
jasonwryan

나는 여전히 이것으로 운이 없다, 아무 일도 일어나지 않는다. tmux가 .tmux.conf 파일을 읽지 않는다는 느낌이 들었습니다. Ctrl-b, j 또는 Ctrl-b에 전혀 응답하지 않기 때문입니다. (이것들은 설정 파일에서 유일한 두 줄입니다)
mrlanrat

7
@mrlanrat 창 번호 앞에 콜론을 붙여야한다는 것을 알았습니다. 아래 답변을 참조하십시오.
Bruno Bronosky

1
'%%'는 무엇을 의미합니까?
oligofren

152

조인 패널이 답입니다. 나도 tmux 문서를 기반으로 그것을 사용하려는 시도에 문제가있었습니다. -t 및 -s 스위치가 [session :] 창이 아닌 [session] : window를 허용하는 것으로 나타났습니다. 즉, 세션을 지정하는 것은 선택 사항이지만 :을 포함하는 것은 필수입니다. (tmux 1.5를 사용하고 있습니다)

따라서 현재 창에 창을 추가하고 창 1을 창에 넣으려면 명령은 (Ctrl-B 또는 바인드 키가 무엇이든간에)입니다 ...

:join-pane -s :1

그런 다음 break-pane을 사용하여 appart를 분리 할 수 ​​있습니다. 기본적으로 Ctrl-B! 바로 가기에 바인딩하려면 s와 같은 기본 바인딩을 재정의하지 않는 것이 좋습니다. 길을 따라 인터넷에서 선택 세션과 관련된 답변을 찾고 시스템에서 작동하지 않기 때문입니다. 브레이크 패널은! @은 바로 옆에 있으며 기본적으로 아무것도 바인딩되지 않습니다. 그런 이유로 나는이 바인딩을 제안합니다 ...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"

또는 대화 형 선택기를 갖기 위해 ...

bind-key @ choose-window 'join-pane -h -s "%%"'

또는 가장 최근에 방문한 창에 항상 참여하려면 ...

bind-key @ join-pane -h -s !

참고 : -h기본 동작과 반대로 창을 가로로 (세로 분할) 쌓아 놓습니다.

가장 중요한 것은 바로 가기로 선택한 것을 학습하는 것입니다. 방금 설정하고 잊어 버린 경우 외국 서버에서 자신을 찾으면 짐을 질 것입니다. 터미널 멀티플렉서가 제공하는 가장 중요한 것은 원격 서버의 안정적인 세션입니다.

이것으로 GNU Screen에서 Tmux 로의 변환이 완료되었습니다. 나는 결코 뒤돌아 보지 않을 것이다.

즐겨!


2
나는 ':'을 놓치고 있었지만 ... 감사합니다.
rascalking

나는 최근에 이유에 대한 의견없이 2 개의 투표를했습니다. 그것은 단지 무례하고 반 포스 문화입니다.
Bruno Bronosky

1
문서는 콜론에 대해 전혀 이야기하지 않습니다! 좋은 것
JonnyRaa

1
도트 구문을 사용하면 window.panejoin-pane -s 1.0를 들어 창 1의 창 0을 현재 창으로 이동 하는 데 도움이되었습니다 . 에서 자세한 내용 maciej.lasyk.info/2014/Nov/19/tmux-join-pane
mbigras

tmux 2.1부터는 :더 이상 필요하지 않습니다 (예 : 그냥 :join-pane -s 1). 어쩌면 그것은 이전 버전의 버그
villapx

38

창을 자신의 창으로 더 잘 옮기는 데 사용했던 것을 좋아한다고 생각합니다. 나는 사용한다

break-pane -t :

실험을 통해 알아 냈지만 잘 작동하는 것 같습니다. 스크립팅이 없어도 쉽게 키 바인드 또는 별칭을 지정할 수 있습니다.


2
+1. 나는 이것보다 훨씬 더 자주 사용하는 경향이있다 join-pane.
Chris B

14

창 식별자를 프롬프트에 입력하지 않으려면 다음을 사용할 수도 있습니다.

bind-key j "join-pane -s !"

마지막 활성 창 / 창이 현재 창에 연결됩니다.


1
어떤 버전을 사용하고 있습니까? unknown command: join-pane -s !1.6으로 갈거야 .
paradroid

여기서 2.0을 사용하지만 따옴표없이 conf에 줄을 넣으면 정상적으로 작동하는 것 같습니다. bind-key j join-pane -s !
bkzland

13

다른 답변을 살펴보고 tmux 매뉴얼 페이지를 숙독 한 후 지금은 다음 바인딩을 설정했습니다.

bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'

그러면 대화식으로 결합 할 창을 선택하고 소문자 s/ v바인딩을 미러링 하여 새로운 수직 / 수평 분할을 만들 수 있습니다. 아무도 창문 대신 개별 창을 선택하는 방법을 알고 있다면 알려주십시오.


이것은 매우 도움이됩니다. 감사합니다. 불행히도 -v-h각각 수직 및 수평 "분할"을 작성하지 않습니다. 그들은 수직 및 수평 " 스태킹 창 "을 각각 만듭니다. (수직으로 쌓인 판유리는 수평으로 나뉘어져 있습니다.) 따라서 두뇌를 그렇게 훈련시켜야합니다. 또한 -v기본값이므로, 나는 그것을 제외하고 -h거기에 넣어서 ~/.tmux.conf당신이 볼 수있는 치트 시트 역할을합니다.
브루노 Bronosky

나는 "break-pane의 반대편"에 대한 다른 대답보다 이것을 좋아합니다. 창을 일시적으로 자체 창으로 분리하면 나중에 이전 창 중 하나로 다시 보내려고합니다. 이는 정상적으로 처리됩니다.
Stabledog

13

키 바인딩

기본적으로 Ctrl+ b, !것입니다 휴식 새 창으로 활성화 된 창을 하고 그것을로 전환합니다.

여기서 Ctrl+ b 의 기본 접두사 입니다 .

세부

tmux이 키가 실행 하는 명령은 break-pane(alias :) 명령 출력 에서 볼 수 있듯이 key-bindings.c 에서 breakp구현 cmd-break-pane.c되고 기본값 으로 바인딩list-keys(alias :)입니다 lsk.

bind-key    -T prefix       !                 break-pane

4

키 바인딩을 변경할 필요가 없습니다.

이동하려는 분할 창에 초점이있는 동안 Prefix 를 입력 한 다음 동일한 세션에있는 대상 창의 번호는 :join-pane -t :1어디에 있습니까 1? 이름을 앞에 붙여서 다른 세션으로 이동할 수 있습니다 project:3. 나에게 join-pane탭 자동 완성 기능이 있습니다 j.

명령에 -h또는 -v스위치를 추가 하여 대상에서 생성 된 새 분할의 방향을 설정하거나 해당 분할로 이동하여 접두사 + space를 다시 정렬하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.