introduction
tmuxでは普段window名にはプロセス名が表示されます。
vimとかシェル以外のプロセスが動いてる時はいいんですが、シェルのまま待機させとくとがzshばっかりになってつらい。
solution
下のように.tmux.confに書くとOK.
これで1:vim*
とか2:hoge_directory-
とか表示されるようになる。
.tmux.conf
set -g automatic-rename on
set -g window-status-format '#I:#{?#{m:#W,zsh},#(basename #{pane_current_path}),#W}#F'
set -g window-status-current-format '#I:#{?#{m:#W,zsh},#(basename #{pane_current_path}),#W}#F'
簡単に解説すると、automatic-rename on
はその名の通り自動的にwindow名を変更する。
status[-current]-format
はwindow名の形式を指定する(currentはアクティブなwindow用)。
window名のフォーマットでは#を使うといろいろできるので使ったやつだけ解説します。
それ以外は参考文献のtmuxのドキュメントを参考に。
スペース途中に入れたりすると動かなくなるので注意。
ちなみにデフォルトだと#I:#W#F
です。
-
#I
: window番号 -
#{?COND,A,B}
: 条件CONDが真ならA、そうでないならB -
#{m:PATTERN,STR}
: 正規表現PATTERNがSTRにマッチしたら真、そうでないなら偽 -
#W
: window名 (普段はプロセス名が入ってる) -
#(CMD)
: シェル用のコマンドCMDの実行結果の1行目 -
#{pane_current_path}
: アクティブなpaneのカレントディレクトリ -
#F
: ステータス(アクティブ * とか1つ前アクティブ - とか)