it-swarm.dev

tmux 창을 창으로 이동

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

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

241
mrlanrat

이를 수행하는 명령은 tmux 1.4에서 join-pane 입니다.

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
221
jasonwryan

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

따라서 현재 창에 창을 추가하고 창 1을 창에 배치하려면 다음 명령을 수행하십시오.Ctrl+B 또는 바인드 키가 무엇이든간에).

:join-pane -s :1

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

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

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

bind-key   @ choose-window 'join-pane -h -s "%%"'
bind-key [email protected] choose-window 'join-pane    -s "%%"'

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

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

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

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

이것으로 GNU Screen에서 Tmux 로의 변환을 완료합니다. 다시는 돌아 보지 않을 것입니다.

즐겨!

167
Bruno Bronosky

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

break-pane -t :

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

45
Joshua K

키 바인딩

기본적으로, Ctrl+b! would break 활성 창을 새 창 으로 바꾸고 이 창으로 전환합니다.

어디 Ctrl + b tmux 의 기본 접두사 입니다.

세부

이 키가 실행하는 tmux 명령은 break-pane (별칭 : breakp) cmd-break-pane.ckey-bindings.c 에서 기본값으로 list-keys (별칭 : lsk) 명령 출력 :

bind-key    -T prefix       !                 break-pane
15
user86041

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

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

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

14
Bernhard T

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

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

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

14
toupeira

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

이동하려는 분할 창에 초점이있는 경우 Prefix를 입력 한 후 :join-pane -t :1를 입력하십시오. 여기서 1는 동일한 세션에있는 대상 창의 번호입니다. project:3와 같이 이름을 앞에 붙여서 다른 세션으로 이동할 수 있습니다. 나에게 join-panej에서 탭 자동 완성.

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

4
Walf