TMUX:ウィンドウを分割した後、新しいウィンドウIDをどのように知ることができますか?

TMUX:ウィンドウを分割した後、新しいウィンドウIDをどのように知ることができますか?

これは私が達成しようとしているプロセスと同じくらい簡単なようですが、検索した結果は何もありませんでした。ウィンドウを分割し、新しく作成されたウィンドウにキーを送信するキーバインディングを作成したいと思います。ただし、send-keysコマンドを使用するにはウィンドウIDが必要です。問題は、現在のウィンドウにいくつのウィンドウが開いているかわからないことです。したがって、元のウィンドウで実行されているコードは、新しいウィンドウインデックスが何であるかを推論できないということです。この新しいインデックスまたはIDを見つける方法はありますか(どちらもターゲットとして使用できます)。

ありがとうございます。

答え1

シェルスクリプトに特に便利な別の方法です。

tmux split-window -P -F "#{pane_id}"

ウィンドウID(例:%4)をstdoutとして出力します。

だからあなたはできます

bash_var=$(tmux split-window -P -F "#{pane_id}")

シェル/bash変数にキャプチャする場合。

からインポートhttps://github.com/tmux-plugins/tmux-sidebar/blob/master/scripts/toggle.sh

答え2

tmuxでは、各新しいウィンドウには環境変数を使用してアクセスできる一意の値があります。TMUX_PANEtmux display -pt "${TMUX_PANE:?}" '#{pane_index}' これでウィンドウ番号が表示されます。

答え3

名前付きパイプを介して新しいウィンドウのIDを再送信してこれを行います。

mkfifo pane_id
tmux split-window -h \; send-keys 'echo $TMUX_PANE > pane_id' Enter \; select-pane -t "$TMUX_PANE"
cat pane_id

答え4

あなたはあなたの問題を過度に考えています。これにより、split-window新しいウィンドウが表示されますsend-keys。すでにtmuxにあるので、バインディングでtmuxを呼び出すべきではありません。努力する

bind-key s split-window \; send-keys "pwd" Enter

関連情報