Tmux: Jak mogę połączyć okno jako podzielone okno?

33

jak mogę pobrać okno z zupełnie innej sesji tmux i dołączyć je jako podział poziomy / pionowy do bieżącego okna?

pielgrzym
źródło

Odpowiedzi:

45

Wygląda na to, że szukasz okienka łączenia. Technicznie do drugiej części pytania chcesz dołączyć okienko do bieżącego okna, a nie pełne okno z drugiej sesji, ponieważ może to obejmować wiele okien.

Oto przykład. Powiedzmy, że jesteś w sesji 0, oknie 4 i w sesji 2, że chcesz okienko okna 3 1. W monicie tmux ( ctrl+b :domyślnie)

join-pane -s 2:3.1

Spowoduje to przeniesienie okienka 1 z okna 3, sesji 2 (-s jest oknem źródłowym i przyjmuje format session: window.pane) do bieżącej sesji (sesja 0).

Poniżej znajdują się pełne dokumenty dotyczące panelu dołączania, które można uzyskać ze strony man tmux. Najbardziej mylącą częścią dla mnie podczas czytania dokumentów było ustalenie formatu, który był oczekiwany dla src-pane, określając numery sesji, okien i okien ( session:window.panena powyższym przykładzie). Możesz także nazwać swoje sesje i okna oraz używać tych nazw zamiast numerów indeksu.

 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.
mmrobins
źródło
9
Czy mogę skopiować panel zamiast go przenosić?
pielgrzym
@pielgrzym Chciałbym też znać odpowiedź na to pytanie. Opublikuj go tutaj, jeśli go znajdziesz.
Bruno Bronosky
Wydaje mi się, że OP szukało czegoś w rodzaju okienka linków, które niestety nie istnieje. Najwyraźniej żądane zachowanie można naśladować za pomocą zagnieżdżonego gniazda Tmux, jak wyjaśniono tutaj: superuser.com/a/323658
elig
16

Jeśli próbujesz dołączyć panele z tej samej sesji, instynktownie zechcesz pominąć „session:” w poleceniu. To się nie powiedzie. Wygląda na to, że przełączniki -s i -t do panelu łączenia akceptują argument w postaci [session]: window [.pane] zamiast [session:] window [.pane]

Innymi słowy, sesja jest opcjonalna, a: jest obowiązkowe. To jest głupie. Byłby to odpowiednik przeglądarek wymagających http://google.com:/ jako wersji skrótu http://google.com:80/ i dających błąd http://google.com/ o_O

Od ctrl-b! dzieli bieżący panel na osobne okno (co jest przeciwieństwem tego, co chcemy zrobić), a ctrl-b @ (który jest tuż obok!) jest domyślnie niezwiązany (co oznacza, że ​​niczego nie zastępujesz) Sugeruję utworzenie tego skrótu ...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"
Bruno Bronosky
źródło
Niezła oprawa.
Nishant,