はじめに
この記事は、みんなで作ろう最強の設定ファイル Advent Calendar 2013という企画の一部です。
$ mkdir -p ~/dotfiles/.zsh/
$ cd !$
$ git clone https://github.com/syui/dotfiles.git
解説
zshやbashというシェルで使えるpowerlineがあります。
まずは、ツールをダウンロードしていきましょう。
$ cd ~/dotfiles/.zsh
$ git clone https://github.com/milkbikis/powerline-shell.git
次に、powerlineの設定ファイルをコピーします。
$ cp config.py.dit config.py
そして、install.pyを実行すると、powerline-shell.pyというファイルが作られます。
$ cd powerline-shell
$ ./install.py
あとは、設定ファイルに以下を書き込みます。
function powerline_precmd() {
export PS1="$(~/dotfiles/.zsh/powerline-shell/powerline.py $? --shell zsh 2> /dev/null)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}" ; do
if [ "$s" = "powerline_precmd" ] ; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
install_powerline_precmd
そして、設定ファイルの読み込みや再起動を行うと、プロンプトが反映されます。
$ source ~/.zshrc
$ exec $SHELL
bash
上記は、zshのものですが、bashの場合は、設定ファイルに以下を書き込みます。
function _update_ps1() {
export PS1="$(~/dotfiles/powerline-shell/powerline-shell.py $? 2> /dev/null)"
}
export PROMPT_COMMAND="_update_ps1"
設定
ここで、powerline-shell/config.pyを編集すると、プロンプトの表示をカスタマイズできます。
表示したくないものは、コメントアウトしていきましょう。
SEGMENTS = [
# 'virtual_env',
# 'username',
'hostname',
'ssh',
'cwd',
'read_only',
'git',
'hg',
'svn',
'fossil',
'jobs',
'root',
]
# powerline-shell/theme/{basic,solarized-dark,washed}というテーマが使えます。
THEME = 'default'
最後に、設定を反映するため、再度、install.pyを実行します。
オリジナルプロンプト
また、個人的に作ったオリジナルプロンプトがあります。
これは、ディレクトリの深層によって、コマンドラインの入力欄を移動させないようにしています。
もちろん、個人的な好みの問題ですが、もしよろしければ使ってみてください。設定は簡単で、ダウンロードしたファイルを読み込むだけです。
$ mkdir -p ~/dotfiles/.zsh/
$ cd !$ && curl -O https://gist.githubusercontent.com/syui/9737740/raw/prompt.zsh
$ cd ~/dotfiles/.zsh
$ echo source $PWD/prompt.zsh >> ~/.zshrc
$ source ~/.zshrc
もし表示がうまく行かなければ、フォントにパッチを当てる必要があります。
フォントにパッチを当てる
$ sudo port install fontforge
$ curl -O http://www.marksimonson.com/assets/content/fonts/AnonymousPro-1.002.zip && git clone https://github.com/Lokaltog/powerline
$ unzip -j *.zip
$ fontforge --script powerline/font/fontpatcher.py *.ttf
$ mv *.ttf ~/Library/Fonts/
zshのプロンプトの書き方
ここでは、zshの基本的なプロンプトの書き方を説明します。
ちなみに、ここでは、具体例として、~/dotfiles/.zsh/prompt.zshを参考にしてみましょう。
まず知ってほしいのは、プロンプトに表示する内容です。zshでは、例えば、ディレクトリやホスト名、コマンドのエラーなどを表示できます。
| プロンプト変数 | 内容 | 表示 |
|---|---|---|
| %M | ホスト名 | localhost.localdomain |
| %m | ホスト名 | localhost |
| %n | ユーザ名 | root |
| %# | ユーザ種別 | #(rootの場合) |
| % | (root以外) | - |
| %y | ログイン端末名 | pts/0 |
| %l | ログイン端末名 | pst/0(tty*の場合はttyを省略) |
| %? | 直前のコマンドの戻り値 | 0 |
| %h,%! | コマンド実行数 | (history数) 1 |
| %d,%/ | カレントディレクトリ | /root/currentdir |
| %~ | カレントディレクトリ | ~/currentdir |
| %C | カレントディレクトリ | currentdir |
| %c,%. | カレントディレクトリ | currentdir($PWD=$HOMEの場合は~) |
| %D | 日付 12-07-31 | 書式)yy-mm-dd |
| %W | 日付 07/31/12 | 書式)mm/dd/yy |
| %w | 日付 Sun 31 | 書式)day dd |
| %* | 時間 15:50:30 | 書式)hh |
| %T | 時間 15:50 | 書式)hh:mm |
| %t,%@ | 時間 03:50PM | 書式)hh:mm(am/pm format) |
ここで、特に面白くて役に立つのが、%?です。コマンドがエラーで終了したのか、成功したのかを知らせてくれます。
参考:
http://tegetegekibaru.blogspot.jp/2012/08/zsh_2.html
さらに、バックグラウンドカラーとフォントカラーを設定すると、非常に分かりやすく表示できます。
ここで、%Fがフォントカラーで、%Kがバックグラウンドカラーです。そして、カラーの終わりは、%fや%kで設定します。
例えば、以下の書き方をした場合は、どうなるでしょうか。
%{%F{white}%K{blue}%} %n {%k%f%}
この場合は、%nであるユーザー名が、フォントカラーを白whiteに、バックグラウンドカラーをブルーblueにして表示されることになります。
| カラー | 内容 | 具体例 |
|---|---|---|
| %{%F{color}%}hoge{%f} | フォントカラーを設定する | %F{cyan} hoge %f |
| %{%K{color}%}hoge{%k} | バックグラウンドカラーを設定する | %{%K{cyan}%} hoge {%k} |
| %{%K{color}%F{color}%}hoge{%f%f} | 両方を設定する | %{%K{cyan}%F{black}%} hoge {%k%f} |
次に、注目すべきポイントとしては、バージョン管理の書式です。
例えば、以下の様な記述があったとします。
zstyle ':vcs_info:git:*' formats '(%s)-[%b]' '%c%u %m'
これは、それぞれ、以下の様な命令内容になっています。
| 書式 | 内容 |
|---|---|
| zstyle | 予め用意されたスタイルを指定する |
| ':vcs_info:git:*' | git のときはステージしているかどうかを表示する |
| formats | フォーマットを指定する |
| %s | バージョン管理システム名(git, svn, hg, ...) |
| %b | ブランチ情報 |
| %c | stagedstr 文字列 |
| %u | unstagedstr 文字列 |
| %m | その他の情報 |
参考:
http://qiita.com/mollifier/items/8d5a627d773758dd8078
カッコいいプロンプトができたら、是非教えて下さい。


