よんちゅBlog

― このブログは自分用のメモや日々の問題などを共有するためのものです ―

20121005185841 お知らせ:  2013/07/17 ブログデザインをリニューアルしました。

zshのプロンプトにtmuxのウィンドウ番号とペイン番号を表示

こんな感じ

screenを使用していた時は $WINDOW でウィンドウ番号を取得して表示していたのだけど、tmuxにはどうもそういうのはないっぽかった。
とうわけで自分でウィンドウ番号とペイン番号を環境変数に設定してそこから取得してzshで表示させることに。

まずはtmuxのウィンドウ番号とペイン番号を環境変数に設定する部分
.zshrcなどに設定して使用

#
# precmdをフック
#  precmd関数を複数登録することができる
#
autoload -Uz add-zsh-hook
_set_tmux_window() {
    if [ "$TMUX" ]; then
        # tmux display
        #   -p 標準出力へ
        #   #I ウィンドウ番号
        #   #P ペイン番号
        export TMUX_WINDOW=$(tmux display -p '#I-#P')
    fi
}
add-zsh-hook precmd _set_tmux_window

pre_cmdは上記のようにして複数の関数を設定することができます。
1つのpre_cmdに他の処理なども含めて設定しても問題ないですがこっちの方が見やすいかなと。
その辺りはお好みでどうぞ

続いて、zshのプロンプト設定部分
これも.zshrcなどに設定して使用
分かりやすいようにカラー設定などの余分なものは消しています

setopt prompt_subst
PROMPT='%{${reset_color}%}[${TMUX_WINDOW:+"$TMUX_WINDOW "}%n@%m:%~]$ %{${reset_color}%}'

以上です。


追記: 2013/06/01

もっと楽な方法があるので紹介。
(この記事の存在を忘れていたので今更だけど更新)

PROMPT変数には $() などを使って直接コマンドを埋め込むこともできます。
export なども不要でお手軽です。
注意として、必ず全体を ' (シングルコーテーション) で囲むようにして下さい。

PROMPT+='$([ -n "$TMUX" ] && tmux display -p "#I-#P ")'

私の設定は以下においてあるので参考にどうぞ。


―――
それにしても、上の画面ではプロンプトに表示される名前がyonchuになっているけど、実際には自分の名前が表示されるんですよね。
っでブログの画像用にわざわざ書き換えているっていう。これ地味にめんどい
(gitで管理しているのでdotfilesのbranchを切ってプロンプトに直接yonchuと入れている)

これ他の方はどうしてるんだろう、最初からユーザ名をブログで使用してる名前にしているのだろうか…