Myślałem, że przeniesienie panelu tmux do okna było tym samym pytaniem, ale tak nie jest.
Biorąc pod uwagę regularne używanie ekranu GNU, szukam tmux do robienia tych samych rzeczy. Jedną z rzeczy, które robię regularnie, jest kilka różnych okien, jedno z pewnym kodem otwartym w vimie, i kilka okien terminali otwartych do testowania kodu, a czasem okno lub dwa dla różnych innych rzeczy. Dzielę ekran pionowo i często mam okno vim w górnym okienku, a następnie jedno z pozostałych okien w dolnym okienku.
Główne polecenia I wtedy stosowanie jest Ctrla, Tababy obrócić między szybami i Ctrla, naby obrócić między oknami w ramach panelu. Na przykład, z vimem w górnym panelu, przełączam się do dolnego panelu, a następnie obracam się przez inne terminale, robiąc wszystko, czego potrzebuję. Ekran pozostaje podzielony przez cały czas.
Problemem jest to, że nie może znaleźć porównywalną zdolność ekranem Ctrla, nw tmux. Przełączanie okien wydaje się nie działać w okienku, ale przeskakuje całkowicie. Jeśli ekran jest podzielony, wydaje się, że jedynymi dwiema opcjami jest przejście do okna, które nie jest podzielone, a następnie podzielenie go lub wykonanie podziału części okienka. Nie są też tym, czego szukałem.
Sugestie (oprócz zwykłego trzymania się ekranu)?
źródło
tmux
oknie można podzielić na wiele paneli. Czy próbujesz przełączać się między oknami w oknie ze skrótem klawiszowym?swap-pane
? Jeśli chcesz emulować ekranyCtrl-a n
, to odpowiednikiem tmux jestCtrl-b n
.Odpowiedzi:
tmux i screen mają różne modele, więc nie ma dokładnego odpowiednika.
W kategoriach ekranowych podział umożliwia wyświetlanie wielu okien jednocześnie.
next
(C-a n
) obraca okna przez aktywną część podziału; pozwala to obracać „ukryte” okna przez aktywny region podziału.W terminach tmux podział dzieli okno na jedną lub więcej paneli. Każda część podzielonego okna jest oddzielnym panelem, panele nigdy nie są ukryte (jeśli okno jest wybrane (widoczne), wszystkie jego panele też są), a panelu można używać tylko w jednym podziale jednego okna (panel może nie może znajdować się w wielu oknach i nie może znajdować się w wielu podziałach tego samego okna). Istnieją polecenia do przenoszenia paneli w oknach (lub między nimi), ale nie w identyczny sposób jak
next
na ekranie .Możesz użyć powiązania takiego jak poniżej, aby uzyskać podobny efekt:
Prawdopodobnie będziesz chciał umieścić to w swoim
~/.tmux.conf
pliku, ale możesz po prostu wpisać / wkleić go później, Prefix :aby powiązać go z bieżącą instancją serwera.Aby użyć powiązania, wybierz „główne okno”, podziel je, utwórz okno „kontener okienkowe” bezpośrednio za „głównym oknem”, a następnie użyj wiązania, aby obrócić dowolne okienko w „głównym oknie” pomiędzy grupą w „ okienko kontenerowe ”.
Oto, w jaki sposób możesz utworzyć konfigurację:
Wybierz okno, które ma być używane jako „okno główne”. Uruchom (np.) Vim w nim.
Podziel „główne okno” na dwa panele.
Eg Prefix "(
:split-window
)Możesz użyć tego panelu jako okna testowego (lub przeglądarki dziennika lub cokolwiek innego).
Utwórz nowe okno („pojemnik okienkowy”) bezpośrednio za głównym oknem.
Eg Prefix c(
:new-window
)Ważne jest, aby żadne inne okno nie znajdowało się między indeksami „okna głównego” i okna „kontenera okienkowego” (
+
w okienku specyfikatory używane w powiązanych poleceniach oznaczają „następne okno o wyższym numerze”).Podziel to okno na kilka paneli. Aby obrócić trzy panele, podziel to okno na dwa panele (trzeci panel to ten w „oknie głównym”).
Być może potrzebujesz powłoki dla git i powłoki do uruchamiania interfejsu bazy danych. Umieść każdy w osobnym okienku w tym oknie „kontenera okienkowego”.
Wróć do „głównego okna”. Wybierz okienko, które chcesz „obrócić”.
Możesz używać Prefix Up/ Down/ Left/ Rightdo poruszania się między panelami.
Wywołaj powiązanie, aby zamienić bieżący panel z pierwszym panelem w oknie „kontener okienkowy” i („za kulisami”) obrócić panele wewnątrz okna „kontener okienkowy” (tak, aby następnym razem, gdy uruchomisz wiązanie, pierwsze polecenie zamienia z oknem „next” w sekwencji).
Prefix Control- n(wiązanie używa Cn, ale możesz to zmienić na cokolwiek zechcesz).
Aby przewijać panele do tyłu, możesz skorzystać z poniższych:
źródło
resize-pane -Z
(domyślnie związany z Prefiksem + z), który tymczasowo „powiększa” panel, aby uzyskać pełny rozmiar okna. W przypadku wersji wcześniejszej niż 1.8 nie było wbudowanego sposobu, aby to zrobić; inni stworzyli rozwiązania skryptowe z innych wbudowanych poleceń (np. niektóre odpowiedzi na pytanie SU „Maksymalizacja” panelu w tmux ).C-b o
cykluje szyby.Wierzę, że to, czego szukasz, jest Ctrlb+ ( →, ←, ↑, ↓). Umożliwi to przemieszczanie się między szybami.
źródło
Ctrl-b+{
lubCtrl-b+}
? To prawie tak blisko, jak mogę znaleźć tej funkcji. Okienka nie są wykonywane w tmuxie tak samo, jak są obsługiwane na ekranie.^b↑
. Jak w takim razie skupić podświetlony panel, aby inny↑
został przechwycony przez powłokę, a nie tmux?użyj
bind -r
, aby nacisnąćprefix
jeden raz, a następnie inne klawisze w sekwencji, aby zlokalizować panel. Limit czasu można zmienić orepeat-time
. Czekman tmux
Jeśli wolisz
hjkl
,źródło
Oto małe conf, które pozwala przejść do kolejnych okien lub okien za pomocą skrótów ALT lub SHIFT + strzałka. Nie ma potrzeby używania prefiksu klucza jest wygodne.
Jeśli jesteś bardziej leniwy ode mnie, możesz również zainteresować się poniższym kodem, który umożliwia nawigację paneli za pomocą myszy. (użycie: prefiks klawisza + m, aby włączyć, M, aby wyłączyć)
ta konfiguracja powinna działać na pewno działa dla Tmux 1.6 do 1.9.
źródło
Odpowiedzi te dają dwa panele, w których oba panele zawierają ten sam zestaw okien, ale każdy panel może przełączać się między oknami niezależnie.
Podejście tmux polega na użyciu trzech sesji:
Tak, to oszalała filozofia UNIX . Zacznijmy:
Teraz możesz przejść do górnego panelu i jak zwykle otworzyć Vima. Aby przechodzić między oknami w sesji wewnętrznej (dolny panel), musisz użyć Ctrl-b Ctrl-b ni p.
OK, teraz zamiast otwierać Vima w górnym okienku, połączmy się ponownie z twoją wewnętrzną sesją. Zamknij vima i tym razem użyj
new-session
komendy (zwłaszcza z-t
not-s
):Voila! Możesz teraz przełączać się między oknami na górnym i dolnym panelu.
Powodem, dla którego musimy użyć
new-session -t
drugi raz, jest to, że jeśli po prostu zrobimy toattach -t
ponownie, wówczas górne i dolne panele zostaną zsynchronizowane, zawsze pokazując to samo okno, co nie jest tym, czego chcesz. Aby umożliwić temu panelowi poruszanie się po oknach niezależnie od drugiego, tworzymy nową sesję „widoku”, ale łączymy jej zaplecze bezpośrednio z istniejącą sesją, w której znajdują się okna. Jest to również znane jako „ sesje zgrupowane ”. (Nawiasem mówiąc, ten link sugeruje również używanie[un]link-window
do przenoszenia okien między sesjami).Oczywiście dla symetrii mógłbyś także biegać
tmux new-session -t inner
w dolnym okienku zamiastattach
. W takim przypadku uruchomiłbyś 4 instancje tmux (plus jeszcze jeden proces tmux dla serwera)!źródło
Umieść następujący kod w swoim
.tmux.conf
:Ponownie załaduj konfigurację, a następnie możesz nacisnąć (bezpośrednio bez klawisza prefiksu) Shift+, →aby przełączać panele w kierunku zgodnym z ruchem wskazówek zegara, i Shift+, ←aby przełączać cykl w kierunku odwrotnym.
Testowane w Tmux 2.8.
Jeśli nie chcesz edytować konfiguracji, prefix+ ojest domyślnym przypisaniem klawiszy dla cyklu zgodnego z ruchem wskazówek zegara. Od czasu do czasu znajdowałem to powiązanie klawiszy, a następnie otrzymuję polecenie
tmux list-keys
i używam go do własnych powiązań klawiszy:źródło