choose-session
()に似たTmuxコマンドが必要ですPREFIX s
が、別のセッションを選択すると現在のセッションが終了します。
理想的には、このコマンドは現在のセッションが別の場所に接続されている場合は切り離しますが、これが唯一の接続である場合はセッションを終了します。これは次のようになります。tmux display -p '#{session_many_attached}'
一つあるエマルジョンしかし、かなり古く、反対の方法(クエリ、終了、結合)で質問をします。
答え1
このバインディングはPREFIX C-s
セッションを選択し、そのセッションに切り替えてから前のセッションを終了します。
bind-key C-s \
if-shell "(($(tmux display -p '#{session_many_attached}') > 0))" \
choose-session \
"run-shell \"tmux choose-session \\\"switch-client -t '%%'; kill-session -t '$(tmux display -p '#S')'\\\"\""
私はシェル式を使用しました(シェルを使わないもう一つの答えが良いでしょう!)。まず、Tmuxを使用して、if-shell
接続されているクライアントが複数あるかどうかを確認します。その場合、標準choose-session
コマンドを呼び出します。
ただし、これがセッションに接続された唯一のクライアントである場合は、カスタムコマンドを渡すがそれに渡すコマンドラインを作成できるように、シェルでchoose-session
これを行います。run-shell
choose-session
コマンドラインは、次の2つのコマンドで構成されています。
switch-client -t '%%'
これはchoose-session
デフォルトで使用されます(man tmux
説明は参考文献を参照)。kill-session -t '$(tmux display -p '#S')'
まず、サブシェルを使用して名前を取得します現在のセッション(まだ削除されていません)をパラメータとしてに渡しますkill-session
。
最後のコマンドが機能するには多くのエスケープが必要です。これには、if-shell
1つのシェルコマンドと2つのtmuxコマンドという3つのパラメータが必要です。スペースが含まれている場合は、引用符で囲む必要があります。したがって、3番目のステートメントrun-shell...
は非常に悪いです!
(tmux 2.3)