Typowa sytuacja to:
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
Otwieram sesję tmux, a następnie ssh na serwerze i przyłączam się do istniejącej sesji tmux. W tym momencie mam jedną sesję tmux w drugiej. Jak wysłać polecenia do wewnętrznej sesji tmux?
Uwaga: obie sesje tmux mają te same powiązania klawiszy.
Odpowiedzi:
send-prefix
Komenda może być używany do wysyłania swój prefiks do klawiszy (proces rozruchu) aktywnego okienka. Domyślnie prefiks to Cb, a Cb jest powiązany zsend-prefix
(tak, że dwukrotne kliknięcie powoduje wysłanie pojedynczego Cb do aktywnego panelu). Właśnie tego potrzebujemy, aby uzyskać dostęp do powiązań wewnętrznej instancji tmux .Pierwsza Cb jest przechwytywana przez „zewnętrzną” instancję tmux jako jej klucz prefiksu. Drugi jest przechwytywany przez „zewnętrzną” instancję tmux i wyzwala jego wiązanie Cb (
send-prefix
). Spowoduje to wysłanie Cb do aktywnego okienka wystąpienia zewnętrznego. Proces działający w tym okienku jest (ostatecznie za pośrednictwem instancji ssh ) „wewnętrzną” instancją tmux . Przechwytuje Cb jako klucz prefiksu. Teraz twoje następne naciśnięcie klawisza zostanie przekazane przez zewnętrzną instancję tmux i przechwycone przez wewnętrzną, aby wywołać wiązanie.Aby wyzwolić wiązanie c (
new-window
) w wystąpieniu tmux drugiego poziomu , należy wpisać Cb Cb c . W przypadku wystąpienia tmux trzeciego poziomu wpisz Cb Cb Cb Cb c .To podwojenie dla każdego poziomu może być denerwujące, jeśli często masz do czynienia z wieloma warstwami tmux . Jeśli możesz zaoszczędzić jakiś inny klucz, możesz utworzyć powiązanie bez prefiksu, aby ułatwić (prawdopodobnie) wpisywanie:
Utwórz nowe okno w tmux drugiego poziomu : C- \ c
Utwórz nowe okno w tmux trzeciego poziomu : C- ^ c (lub C- \ C- \ c )
Jeśli masz ograniczoną liczbę poleceń tmux , które chcesz (łatwo) wysłać do instancji tmux niższego poziomu , możesz zamiast tego użyć
send-keys
do utworzenia określonych powiązań (prawdopodobnie tylko w instancji tmux najwyższego poziomu ):Utwórz nowe okno w tmux drugiego poziomu : Cb Cc
Utwórz nowe okno w tmux trzeciego poziomu : Cb C
źródło
last-window
wiązania jak go nazywano, gdy robiC-a C-a
, takich jak:#bind-key C-a last-window
. Zauważ, że mój prefiks toa
, a nie domyślnyb
.bind-key -n C-\ send-prefix
nie działa. Mój tmux nie rozpoznaje \. Kiedy używam listu, to działa.tmux bind-key -n 'C-\' send-prefix
); jeśli masz problemy z~/.tmux.conf
uruchomieniem go z (lub:
wiersza poleceń Prefix ), możesz spróbować podobnego cytowania (tjbind-key -n 'C-\' send-prefix
.).Aby uzyskać dostęp do wnętrza, przytrzymaj klawisz Control i dwukrotnie naciśnij B.
źródło
EDYTOWAĆ:
Ja nie zaleca stosowania
C-q
jako bind-klucza, ponieważ jest to domyślny klawisz sterowania polecenieSytuacja ma miejsce tutaj , a @Paschalis zapewnia rozwiązanie:
Poniżej odpowiedź:
Aby to ułatwić, dodaj poniższy wiersz do pliku
~/.tmux.conf
Następnie możesz bezpośrednio użyć
C-q
jako klawisz powiązania dla zdalnego tmux.źródło