私はtmuxを初めて使用し、ステータスバーの左側に次のように反映されるようにtmux.confファイルを編集しようとしています。
_[SessionName] [CurrentPane] [CurrentWorkingDirectory]
_
SessionName
とCurrentPane
を表示できます。ただし、CurrentWorkingDirectory
を表示できません。
私はいくつかの#(Shell command)
オプションを試しました:
#(tmux select-pane -t :.#P; pwd)
:しかし、これは他の$ PWD変数を出力します[〜#〜] not [〜#〜]現在のペインのbashセッションの現在のディレクトリを反映します。
#(tmux select-pane -t :.#P; tmux send-keys pwd Enter)
まず、ターミナルにいる場合はCurrentWorkingDirectory
を出力しましたが。これをターミナルに出力し、[〜#〜] not [〜#〜]ステータスバーに希望どおりに出力します。次に、ターミナルにいるかどうかに関係なく、15秒ごとに「pwdEnter」を入力しました。これは、(私のように)速くない場合は元に戻すのが面倒でした。
私はこれらのオプションを試しましたが、役に立ちませんでしたが、私がやりたいことをすることは可能ですか?そしてどうやって?
そのための変数があります。これはマンページにはないようですが、開発バージョンで言及されています。私にとっては、tmuxの1.8リリースで動作します。
set -g status-left "#{pane_current_path}"
これは、window-statusに置いたときにも機能することに注意してください。各ウィンドウのステータスには、それぞれの作業ディレクトリが記載されています。
setw -g window-status-format "#{pane_current_path}".
Bashでこれを行う方法はわかりませんが、zshには、すべてのコマンドの前に実行されるフックがあります。あなたの.zshrcで:
precmd () {
tmux set -qg status-left "#S #P $(pwd)"
}
これにより、コマンドを実行するたびにそのtmux
コマンドが実行されます。お役に立てれば。 bash
にはprecmd
がないため、これを行う方法がわかりません。
残念ながら、提案されたソリューションはバージョン1.7(OpenSuse 12.3の「公式バージョン」)では機能しませんが、解決策を見つけることができました。/etc/tmux.conf
内:
setw -g window-status-current-format "#T(#I:#W#F)"
setw -g window-status-format "#T(#I:#W#F)"
ここで#T-現在のペインタイトルを表示するように指示します。これはエスケープシーケンスで設定できます。各シェルコマンドでこれを行うには、.bashrc
のどこかに置きます。
[[ -n "$TMUX" ]] && Prompt_COMMAND='echo -n -e "\e]2;${PWD/${HOME}/~}\e\\"'
これは、OpenSuse 12.3、tmux 1.7、bash4.2.53で機能します。