Powerline についての記事、これで 5 つ連続してますね。
題名はホッテントリメーカーです。イヤいるんですけどね、僕とか。
前回やたらとセグメントを追加したおかげで、動作がもっさりしてきたかもしれません。というか僕がそうでした。そういう方は第 2 回に名前だけ紹介した powerline-daemon の利用を検討してみましょう。
powerline-daemon のインストール
これは特に難しくありません。ダウンロードしてきて、必要なファイルをパスの通ったディレクトリに置くだけです。
$ cd ~/git $ git clone https://github.com/kovidgoyal/powerline-daemon $ cd ~/bin $ ln -s ../git/powerline-daemon/powerline-daemon $ ln -s ../git/powerline-daemon/powerline-client.py
README には powerline-client.c をコンパイルして使うように記されていますが、Python で書かれている powerline-client.py でも大して変わらんと思います。多分。
後は、powerline-daemon と打って、起動するだけです。
$ powerline-daemon # テーマやカラースキームの変更は自動的に適用されるが、 # Powerline 本体や、セグメント用のモジュールなどを書き換えたときは再起動が必要。 $ powerline-daemon -r
シェルプロンプトの設定
Bash での例を書きます。今までは公式ドキュメントにあるとおり、.bashrc に 1 行だけ追加していたと思いますが、
. ~/git/powerline/bindings/bash/powerline.sh
powerline-client.py を使うように、中身を書き換えて .bashrc に直接貼り付けておきます。
# powerline
_powerline_tmux_setenv() {
if [[ -n "$TMUX" ]]; then
tmux setenv TMUX_"$1"_$(tmux display -p "#D" | tr -d %) "$2"
fi
}
_powerline_tmux_set_pwd() {
_powerline_tmux_setenv PWD "$PWD"
}
_powerline_tmux_set_columns() {
_powerline_tmux_setenv COLUMNS "$COLUMNS"
}
_powerline_prompt() {
[[ -z "$POWERLINE_OLD_PROMPT_COMMAND" ]] ||
eval $POWERLINE_OLD_PROMPT_COMMAND
PS1="$(powerline-client.py shell left -r bash_prompt --last_exit_code=$?)"
_powerline_tmux_set_pwd
}
trap "_powerline_tmux_set_columns" SIGWINCH
_powerline_tmux_set_columns
[[ "$PROMPT_COMMAND" == "_powerline_prompt" ]] ||
POWERLINE_OLD_PROMPT_COMMAND="$PROMPT_COMMAND"
export PROMPT_COMMAND="_powerline¥_prompt"
シェルを再起動すると、プロンプトがずいぶん軽快になっているはずです。
tmux の設定
これは単に powerline となっていたところを powerline-client.py に書き換えるだけですね。
set -g status-left '#[fg=colour16,bg=colour254,bold] #S #[fg=colour254,bg=colour236,nobold]?#(powerline-client.py tmux left)' set -g status-right '#(powerline-client.py tmux right)'
vim は……?
さて、これらができるならば、当然 vim はどうなの? となりますよね。結論から言うと、 vim では powerline-client.py が使えません。もとい、必要ありません。
tmux や bash は Powerline を表示するために /usr/bin/python を別プロセスで立ち上げていますが、vim は内蔵の Python インタプリタを使うので資源を余計に消費しない(はず)のです。
とはいえ、セグメントで重い処理(前回書きました、Last.fm の再生履歴のような)してたら意味ありませんからね。vim の Powerline では vim の情報を表示するだけにしておきましょう。
