Типичная ситуация может быть:
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
Я открываю сеанс tmux, затем подключаюсь к серверу по ssh и присоединяюсь к существующему сеансу tmux. На данный момент у меня есть один сеанс tmux внутри другого. Как отправить команды во внутреннюю сессию tmux?
Примечание. Обе сессии tmux имеют одинаковые привязки клавиш.
Ответы:
send-prefix
Команда может быть использована для отправки префикса нажатия клавиши (процесс обкатки) активная панели. По умолчанию префикс Cb и Cb обязанsend-prefix
(так , что удар его дважды посылает один Cb на активной панели). Это как раз то, что нам нужно для доступа к привязкам внутреннего экземпляра tmux .Первый Cb фиксируется «внешним» экземпляром tmux в качестве его префиксного ключа. Второй захватывается «внешним» экземпляром tmux и запускает привязку Cb (
send-prefix
). Это отправляет Cb на активную панель внешнего экземпляра. Процесс, запущенный на этой панели, является (в конечном счете, через экземпляр ssh ) «внутренним» экземпляром tmux . Он захватывает Cb в качестве префиксного ключа. Теперь ваше следующее нажатие клавиши будет пропущено через внешний экземпляр tmux и захвачено внутренним, чтобы вызвать привязку.Чтобы вызвать привязку c (
new-window
) в экземпляре tmux второго уровня , вы должны набрать Cb Cb c . Для экземпляра tmux третьего уровня вы должны набрать Cb Cb Cb Cb c .Это удвоение для каждого уровня может раздражать, если вы обычно имеете дело с несколькими слоями tmux . Если вы можете сэкономить какой-то другой ключ, вы можете сделать привязку без префикса, чтобы упростить ввод (возможно):
Создать новое окно в tmux второго уровня : C- \ c
Создать новое окно в tmux третьего уровня : C- ^ c (или C- \ C- \ c )
Если у вас есть ограниченное количество команд tmux, которые вы хотите (легко) отправить в экземпляры tmux более низкого уровня , вы можете вместо этого использовать их
send-keys
для создания некоторых конкретных привязок (возможно, только в вашем экземпляре tmux верхнего уровня ):Создать новое окно в tmux второго уровня : Cb Cc
Создать новое окно в tmux третьего уровня : Cb C
источник
last-window
силу , как это называлось , когда делатьC-a C-a
, как таковой:#bind-key C-a last-window
. Обратите внимание, мой префиксa
, а не по умолчаниюb
.bind-key -n C-\ send-prefix
не работает. Мой tmux не распознает \. Когда я использую письмо, это работает.tmux bind-key -n 'C-\' send-prefix
); если у вас возникли проблемы с его получением~/.tmux.conf
(или из:
командной строки Prefix ), вы можете попробовать аналогичное цитирование (т.е.bind-key -n 'C-\' send-prefix
).Чтобы получить доступ к внутреннему, удерживайте контроль и дважды нажмите B.
источник
РЕДАКТИРОВАТЬ:
Я НЕ рекомендую использовать
C-q
в качестве связующего ключа, так как это стандартная команда управляющего ключа дляСитуация происходит здесь , и @Paschalis предлагает решение:
Ниже это ответ:
Чтобы сделать это просто, добавьте следующую строку в
~/.tmux.conf
Затем вы можете напрямую использовать в
C-q
качестве связующего ключа для вашего удаленного Tmux.источник