Oh-my-zshでZSH_TMUX_AUTOSTART=true
を使用してtmuxプラグインを有効にしました。これで、ターミナルを開くたびにセッションに接続されます。その部分は本当にいいです。
問題は、新しいセッションを開始してシェルにアクセスできないことです。
Tmuxプラグを無効にせずに新しいセッションを開始する方法はありますか?
$ 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
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 …
を実行するだけです。さもないと、
-S
を使用して現在のサーバーをポイントしている間、-d
を追加してデタッチセッションを作成し、-P
を追加して、新しいセッションの名前を出力します(これには、tmux 1.8以降が必要です)。次に、出力(新しいセッションの名前)がswitch-client
に渡されます。
tmux 1.8がない場合は、少しやり直す必要があるかもしれません(たとえば、関数に新しいセッションに名前を付ける必須の引数をとらせて、new-session
との両方に渡すことができるようにします。 switch-client
)。
* 2つのステータスバーがあります。内部セッションにtmuxコマンドを入力するのは複雑です。内側のクライアントを切り替えて外側のセッションを表示すると、奇妙なことが起こる可能性があります(鏡の間など)。
†-d
…を使用する場合は、警告を抑制すべきかもしれません。