労働環境:

労働環境:

tmux 2.1のステータスバーに問題があります。ドキュメントに記載されているように、 ~/.tmux.conf に次のように書きます。

set -g status-right "#(/bin/pwd) %R %d/%m/%g"
set -g status-interval 1

tmuxを起動した後、ステータスバーは/ home / conformistです。しかし、cd /のようにcwdを変更すると、ステータスバーはまだ$ HOMEです。

confを次のように変更した場合:

set -g status-right "#{pane_current_path} %R %d/%m/%g"

ステータスバーで〜のような$ HOMEを見たいのですが、pwdが変更されていないため、それを行うことはできません(そしてpwd | perl -pne s-$HOME-~-も機能しません)。

答え1

労働環境:

オペレーティングシステム

  • オペレーティングシステム10.14.5

端末

マルチプレクサ

  • マルチプレクサ2.9a

ステータスの右側のフィールドの例

~/.tmux.config提供された例では、外部bashスクリプトを呼び出すためのファイルは次の場所にあります。~/.tmux_path.sh

~/.tmux.config

set -g status-interval 1
set -g status-right-length 150
set -g status-right "#(~/.tmux_path.sh #{pane_current_path}) %Y-%m-%d %H:%M:%S"

例 bash スクリプトは #{pane_current_path) arg を読み込みます。 basename開始パスを切り捨て、現在のパスのみを表示します。ウィンドウIDとして使うと大丈夫です。注:これは、人々が望む結果に合わせて$HOME = /home/user調整する必要があるかもしれないと仮定します。-f-1,4-

~/.tmux_path.sh

#!/bin/sh
printf '\033%s\007' $(echo "$1" | awk '{print "~"$1}' | cut -d/ -f-1,4-)

スクリプトを実行可能にする

chmod +x ~/.tmux_path.sh

ウィンドウの命名例

  • 注:~/.tmux_path.sh上記と同じコンテンツを使用してください。

~/.tmux.conf

set -g status-interval 1
set -g window-status-current-format "[#[fg=white] #(~/.tmux_path.sh #{pane_current_path})]"
set -g window-status-format "#[fg=black] #(~/.tmux_path.sh #{pane_current_path})"

答え2

/bin/pwdプログラムは同じプロセスによって実行されるため、呼び出しは機能しません。いいえあなたの殻)。を使用している場合は、例に示されているエスケープシーケンスを使用して、ウィンドウの名前を変更するためにエスケープbashシーケンスを送信するようにプロンプ​​トを変更できます。tmux

printf '\033kWINDOW_NAME\033\\'

以下は、エスケープシーケンスを示す別のシェルスクリプトです。

#!/bin/sh
printf '\033k%s\033\\' $(pwd)

xtermヘッダーが使用するものとは異なるエスケープシーケンスですが、次の提案を適用できます。BashプロンプトHOWTO同じ方法で。

追加資料:

関連情報