表示スペース1行を節約するために、下部のステータスバーを非表示にして、シェルプロンプトに現在のtmuxウィンドウ番号を入れて、現在の場所をより簡単に知ることができるようにしたいと思います。
GNU画面には環境変数があり、WINDOW
tmuxにはそのような変数がないようですが、シェルから現在のウィンドウ番号を取得する方法はありますか?
試してみましたが、TMUX_PANE
ウィンドウ(またはウィンドウ)を閉じて新しいウィンドウを開くときと同じように増え続けます。TMUX_PANE
シェルがtmuxウィンドウで実行されているかどうかを検出するために存在するかどうかを確認します。
答え1
tmuxの用語には「ウィンドウ番号」はありません。 「ウィンドウインデックス」と一意の「ウィンドウID」があります。デフォルトのステータス行には各ウィンドウの前の内容が表示されるので、「window_index」を意味すると仮定します。
tmux display-message -p -F '#{window_index}'
ウィンドウインデックスに関する情報はアクティブウィンドウから取得されるため、アクティブウィンドウに上記のコマンドを入力するだけで十分です。通常、すべてのウィンドウで動作し、独自のウィンドウを決定する同様のコマンドが必要な場合があります。
tmux display-message -p -F '#{window_index}' -t "$TMUX_PANE"
display-message
録音済みここ。#{variables}
利用可能な他のコンテンツを表示します。ここ。
例PS1
:
PS1="\$(tmux display-message -p -F '#{window_index}' -t \"\$TMUX_PANE\") \u@\h:\w$ "
メモ:
ウィンドウを別のウィンドウに移動すると(たとえばを使用して
tmux swap-pane …
)、印刷されたプロンプトは更新されず、古いウィンドウのインデックスが表示されるため、誤解を招く可能性があります。印刷のヒント後ろにウィンドウを移動すると、新しいウィンドウのインデックスが表示されます。あなたのシェルは現在のプロンプトを更新するメカニズムをサポートするかもしれませんし、サポートしていないかもしれません(例えば
zsh
)。以前のすべてのプロンプト(画面とウィンドウの履歴にまだ表示されているプロンプト)を更新するのは非常に面倒で、簡単な解決策があるとは思いません。のバックスラッシュは、割り当て中に評価される
\$(tmux …)
のを防ぎます。プロンプトは印刷されるたびに個別に評価されます。バックスラッシュがない場合は、割り当て中に取得されたウィンドウインデックスが含まれます。その後、ウィンドウを別のウィンドウに移動すると、新しく印刷されたプロンプトにも古いウィンドウのインデックスが表示されます。$(…)
PS1
PS1