Odpowiedzi:
Polecenie, aby to zrobić, znajduje się join-pane
w tmux 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.
Aby to uprościć, mam dla tego następujące powiązania .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 '%%'"
Pierwszy chwyta panel z okna docelowego i łączy go z bieżącym, drugi robi odwrotnie.
Następnie możesz ponownie załadować swoją sesję tmux, uruchamiając w sesji następujące czynności:
$ tmux source-file ~/.tmux.conf
Prefix+s
i wprowadź nazwę okna w monicie, aby wysłać okienko do tego okna ...
okienko do łączenia jest odpowiedzią. Ja również miałem problemy z moimi próbami użycia go na podstawie dokumentacji tmux. Odkryłem, że przełączniki -t i -s wydają się akceptować okno [session]: window, a nie [session:]. To znaczy, że określenie sesji jest opcjonalne, ale włączenie: jest obowiązkowe. (Używam Tmux 1.5)
Dlatego w celu dodania okienka do bieżącego okna i umieszczenia okna 1 w okienku, polecenie brzmiałoby (Ctrl-B lub dowolny inny klucz powiązania, a następnie) ...
:join-pane -s :1
Następnie możesz je rozbić za pomocą okienka, które domyślnie to: Ctrl-B! Jeśli chcesz powiązać go ze skrótem, sugeruję, aby NIE zastępować domyślnego wiązania, takiego jak s, ponieważ po drodze będziesz szukać w Internecie odpowiedzi, która obejmuje sesję wyboru i nie będzie działać w twoim systemie. Zauważ, że szyba podziału jest związana! a @ jest tuż obok i domyślnie nie jest z niczym związany. Z tego powodu sugeruję to wiązanie ...
bind-key @ command-prompt -p "create pane from:" "join-pane -s ':%%'"
Alternatywnie, aby mieć interaktywny selektor ...
bind-key @ choose-window 'join-pane -h -s "%%"'
Alternatywnie, aby zawsze dołączać do ostatnio odwiedzanego okna ...
bind-key @ join-pane -h -s !
UWAGA: -h
Powoduje, że układa panele poziomo (z podziałem pionowym), w przeciwieństwie do domyślnego zachowania, które jest odwrotne.
Najważniejszą rzeczą jest to, aby UCZYĆ się tego, co wybierzesz skrótem. Ponieważ jeśli go po prostu ustawisz i zapomnisz, zostaniesz wciągnięty, gdy znajdziesz się na obcym serwerze. I spójrzmy prawdzie w oczy, najważniejszą rzeczą, jaką zapewnia multiplekser terminali, są niezawodne sesje na zdalnych serwerach.
To kończy moją konwersję z ekranu GNU do Tmux. Nigdy się nie obejrzę.
Cieszyć się!
window.pane
na przykład join-pane -s 1.0
przenieść panel 0 w oknie 1 do bieżącego okna. Więcej informacji na maciej.lasyk.info/2014/Nov/19/tmux-join-pane
:
najwyraźniej nie jest już wymagany (np. Po prostu zrób :join-pane -s 1
). Być może był to błąd we wcześniejszych wersjach
Myślę, że bardziej podoba mi się to, czego używałem do przenoszenia paneli do ich własnych okien. używam
break-pane -t :
Zrozumiałem to przez eksperymenty, ale wydaje się, że działa to bardzo dobrze. Możesz łatwo przypisać klawisz lub alias, nie wymaga skryptowania.
join-pane
.
Jeśli nie chcesz wpisywać identyfikatora panelu w pytaniu, możesz także użyć
bind-key j "join-pane -s !"
który połączy ostatnie aktywne okienko / okno z bieżącym oknem.
unknown command: join-pane -s !
z 1.6.
bind-key j join-pane -s !
Po przejrzeniu innych odpowiedzi i przejrzeniu strony podręcznika użytkownika tmux zdecydowałem się na następujące powiązania:
bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'
To pozwoli ci interaktywnie wybrać okno, które chcesz połączyć, i odzwierciedla moje małe litery s
/ v
powiązania, tworząc nowe podziały pionowe / poziome. Jeśli ktoś wie, jak wybrać pojedyncze panele zamiast okien, daj mi znać.
-v
i -h
nie tworzą odpowiednio „podziałów” pionowych i poziomych. Tworzą odpowiednio pionowe i poziome „ stosy ”. (To znaczy, że pionowo ułożone szyby mają poziomy podział). Więc musisz wytrenować swój mózg w ten sposób. Również -v
jest domyślna, więc ja zostawiam to na zewnątrz i tylko umieścić -h
tam tak, że ~/.tmux.conf
działa jako ściągawki dla ciebie patrzeć.
Domyślnie Ctrl+ b, !by złamać aktywnego okienka do nowego okna i przejść do niego.
Gdzie Ctrl+ bto domyślny przedrostek dla tmux .
tmux
Polecenie to jest kluczowe Wykonuje break-pane
(alias: breakp
) wprowadzone w cmd-break-pane.c
związał jako domyślny w klucza bindings.c jak widać w list-keys
(alias: lsk
) wyjście polecenia:
bind-key -T prefix ! break-pane
Nie musisz zmieniać przypisań klawiszy.
Podczas gdy fokus, który chcesz przenieść, jest aktywny, wpisz Prefiks, a następnie :join-pane -t :1
gdzie 1
jest dowolny numer okna docelowego w tej samej sesji. Możesz przenieść go do innej sesji, przygotowując jego nazwę jak project:3
. Dla mnie join-pane
tab-autouzupełnianie z j
.
Dodaj -h
lub -v
przełącz do polecenia, aby ustawić orientację nowego podziału utworzonego w miejscu docelowym, lub po prostu przejdź do niego i Prefiks +, spaceaby zmienić kolejność.