##はじめに
この記事は、みんなで作ろう最強の設定ファイル 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 | 書式)hhss |
%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
カッコいいプロンプトができたら、是非教えて下さい。