2

Я включил плагин tmux в oh-my-zsh с ZSH_TMUX_AUTOSTART=true и теперь каждый раз, когда я открываю терминал, я присоединяюсь к сеансу. Эта часть действительно хороша.

Проблема в том, что теперь я не могу начать новый сеанс и получить доступ к оболочке.

Есть ли способ начать новый сеанс без отключения tmux plugi?

$ tmux new-session -s new
sessions should be nested with care, unset $TMUX to force

У меня есть открытый билет на github: https://github.com/robbyrussell/oh-my-zsh/issues/3192

2 ответа2

2

Без -d new-session будет автоматически присоединяться к новому сеансу (вы, вероятно, не хотите вложенные сеансы *, таким образом, предупреждение). Что вы, вероятно, хотите сделать, это создать новый «отдельный» сеанс, а затем переключить текущий клиент на этот новый сеанс. Я не думаю, что new-session имеет опцию для обработки этого варианта использования, но это довольно легко сделать с помощью небольшого количества сценариев оболочки:

tmux-new() {
  if [[ -n $TMUX ]]; then
    tmux switch-client -t "$(TMUX= tmux -S "${TMUX%,*,*}" new-session -dP "$@")"
  else
    tmux new-session "$@"
  fi
}

# example usage:
tmux-new -s new

Если TMUX отсутствует, просто запустите tmux new … Иначе,

  • снимите TMUX, чтобы избежать ошибки при использовании -S для указания на текущий сервер,
  • добавить -d для создания отдельного сеанса и
  • добавьте -P чтобы вывести имя нового сеанса (для этого требуется tmux 1.8 или новее).

Вывод (имя нового сеанса) затем передается switch-client .

Если у вас нет tmux 1.8, вам, возможно, придется немного переработать его (например, заставить функцию принимать обязательный аргумент, который называет новый сеанс, чтобы вы могли передать его как new-session и switch-client).

* У вас будет две строки состояния; сложно вводить команды tmux для внутреннего сеанса; и это может сделать странные вещи, если вы переключите внутренний клиент для просмотра внешнего сеанса (подумайте: зеркальный зал).
† Может быть, предупреждение должно быть подавлено при использовании -d ...

1

tmuxinator решил это:

tmuxinator start [project]

И он проходит через текущий сеанс tmux прямо в новый.

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