Начните новый сеанс изнутри tmux с помощью ZSH_TMUX_AUTOSTART=true

Я включил плагин 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 ответа

Решение

tmuxinator решил это:

tmuxinator start [project]

И это пробивает ток tmux сессия прямо в новый.

Без -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 ...

Другие вопросы по тегам