tmux 창을 창으로 이동 에서 왔습니다

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

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



답변

이를 수행하는 명령은 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 문서를 기반으로 그것을 사용하려는 시도에 문제가있었습니다. -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 로의 변환이 완료되었습니다. 나는 결코 뒤돌아 보지 않을 것이다.

즐겨!


답변

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

break-pane -t :

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


답변

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

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

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


답변

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

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

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


답변

키 바인딩

기본적으로 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


답변

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

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

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