tmux runは画面を消去して印刷します。アクションを次の行に変更する方法

tmux runは画面を消去して印刷します。アクションを次の行に変更する方法

変数から現在のウィンドウをキャプチャしようとしています。ただし、tmux run "#{pane_id}"コマンド出力を使用して現在のウィンドウを上書きし、キーを押してウィンドウを消去します。私のリモートコンピュータは、ウィンドウの次の行に同じコマンド出力を出力します。ローカルコンピュータが次の行に印刷するように動作を変更するにはどうすればよいですか?

ウィンドウ番号に基づいてウィンドウ切り替え動作を変更できるように、変数にコマンド出力のみをキャプチャしようとしています。

コマンド前の端末: ここに画像の説明を入力してください。

コマンド後のターミナル:ここに画像の説明を入力してください。

特定のキーを押すと、コマンドの前の端末に戻ります。

答え1

ウィンドウID自体を実行するのではなく、ウィンドウIDを出力するコマンドを実行したいと思います。

例えば

$ var=$(tmux run "printf '%s' '#{pane_id}'")
$ echo "$var"
%2

答え2

私はタイトルについて話すことではありません。私はあなたのものを修正しようとしませんtmux run …XYの問題)。実際の問題を解決しています。

ウィンドウ番号に基づいてウィンドウ切り替え動作を変更できるように、変数にコマンド出力のみをキャプチャしようとしています。

ウィンドウで実行されているプロセスはすでにTMUX_PANEその環境に存在している必要があります。例: echo "$TMUX_PANE"env | grep TMUX。これは、ウィンドウのシェルスクリプトを$TMUX_PANE変数として直接使用できることを意味します。しかし、ウィンドウ自体からIDを取得したいのか、それとも別の場所でIDを取得したいのかわかりません。

より一般的なアプローチは次のとおりです。

tmux display-message -p '#{pane_id}'

以下を使用して、シェル変数としてキャプチャできます。

var="$(tmux display-message -p '#{pane_id}')"

利点は次のとおりです。

  • このコマンドはtmuxの外側のシェルで動作します(明らかに利用できません$TMUX_PANE)。
  • tmuxの内部では有効ですが、ウィンドウでは無効です(たとえばprefix:display-message '#{pane_id}'Enter、デフォルトprefixCtrl+ b)。これには、tmux bind-key …キーストローク()を介して実行できるコード(おそらくシェルコード)が含まれます。
  • display-messageAcceptを-t使用すると、ウィンドウ内でもウィンドウ自体のIDに制限されません。例: tmux display-message -p -t '{bottom}' '#{pane_id}'。バラよりman 1 tmux 説明する場所ターゲットウィンドウ

関連情報