Jak przenieść istniejący panel do innego okna w Tmuxie, gdy mam wiele okien i odwrotnie?
Wychodzę z ekranu , gdzie mogę przejść do panelu, a następnie przełączać okna, aż dojdę do tego, którego chcę; Wydaje się, że tmux na to nie pozwala.
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) ...
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 ...
Alternatywnie, aby mieć interaktywny selektor ...
Alternatywnie, aby zawsze dołączać do ostatnio odwiedzanego okna ...
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ę!
źródło
window.pane
na przykładjoin-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 wersjachMyślę, że bardziej podoba mi się to, czego używałem do przenoszenia paneli do ich własnych okien. używam
Zrozumiałem to przez eksperymenty, ale wydaje się, że działa to bardzo dobrze. Możesz łatwo przypisać klawisz lub alias, nie wymaga skryptowania.
źródło
join-pane
.Jeśli nie chcesz wpisywać identyfikatora panelu w pytaniu, możesz także użyć
który połączy ostatnie aktywne okienko / okno z bieżącym oknem.
źródło
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:
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ć.źródło
-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ć.Wiązanie klucza
Domyślnie Ctrl+ b, !by złamać aktywnego okienka do nowego okna i przejść do niego.
Gdzie Ctrl+ bto domyślny przedrostek dla tmux .
Detale
tmux
Polecenie to jest kluczowe Wykonujebreak-pane
(alias:breakp
) wprowadzone wcmd-break-pane.c
związał jako domyślny w klucza bindings.c jak widać wlist-keys
(alias:lsk
) wyjście polecenia:źródło
Nie musisz zmieniać przypisań klawiszy.
Podczas gdy fokus, który chcesz przenieść, jest aktywny, wpisz Prefiks, a następnie
:join-pane -t :1
gdzie1
jest dowolny numer okna docelowego w tej samej sesji. Możesz przenieść go do innej sesji, przygotowując jego nazwę jakproject:3
. Dla mniejoin-pane
tab-autouzupełnianie zj
.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ść.źródło