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
端末
- 喜び0.3.3 -https://github.com/jwilm/alacrtty
- iTerm2 3.2.9 -https://iterm2.com/
- アップルターミナル2.9.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同じ方法で。
追加資料: