4

Я обнаружил, что использование iTerm2 и tmux -CC весьма полезно, связывая существующий интерфейс iTerm с окнами и панелями tmux.

Я пытаюсь выяснить, как автоматически присоединиться к существующему сеансу при запуске iTerm (с помощью параметра « Send text at start: настройка профиля») или создать новый, если он не существует.

Я видел, как несколько человек предлагали что-то вроде следующего:

tmux attach -t base || tmux new -s base

но добавление флага -CC приводит к некоторому странному поведению / не работает. Я получаю следующую ошибку при первом запуске:

A tmux protocol error occurred.
Reason: %begin with empty command queue

и оболочка (клиент?) имеет следующий вывод:

> tmux -CC attach -t base || tmux -CC new -s base                     
** tmux mode started **

Command Menu
----------------------------
esc    Detach cleanly.
  X    Force-quit tmux mode.
  L    Toggle logging.
  C    Run tmux command.
Detached
** tmux mode started **

Command Menu
----------------------------
esc    Detach cleanly.
  X    Force-quit tmux mode.
  L    Toggle logging.
  C    Run tmux command.
Detached
%output %0 \015\015\033M\033[0m\033[23m\033[24m\033[J\033[36m@\033[32mgloesch\033[m\017 \033[1m\033[34m~\033[m\017 \015\012> \033[K\033[68C\033[31m<system>\033[m\017 \033[m\017\033[77D
%begin 1444229906 14 1
%end 1444229906 14 1
%exit

Во время этого процесса создается второе окно, но затем все закрывается, когда все заканчивается.

1 ответ1

2

Вместо использования Send text at start: я бы предложил передать команду в качестве аргумента ssh. В моем случае, работает следующее (хотя с последней бета-версией iTerm2, так что вы можете попробовать обновить ее, если она не работает для вас):

ssh -t <user>@<remote> "tmux -CC new -A -s foo"

Вы можете заключить это в функцию и поместить в файл инициализации оболочки (.zshrc , .bashrc и др.) Для легкого вызова:

$ cat ~/.zshrc
function cch {
  ssh -t $@ "tmux -CC new -A -s foo"
}
$ cch <user>@<remote>

См. Справочную страницу tmux для получения подробной информации о переключателе -A для команды new-session , а также в этой теме на GitLab iTerm , где Джордж Нахман предложил это элегантное решение с использованием -A которое хорошо интегрируется с iTerm.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .