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 の情報を表示するだけにしておきましょう。