LoginSignup
39
39

More than 5 years have passed since last update.

はじめに

この記事は、みんなで作ろう最強の設定ファイル Advent Calendar 2013という企画の一部です。

$ mkdir -p ~/dotfiles/.zsh/

$ cd !$

$ git clone https://github.com/syui/dotfiles.git

解説

zshbashというシェルで使える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

あとは、設定ファイルに以下を書き込みます。

~/.zshrc
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の場合は、設定ファイルに以下を書き込みます。

~/.bashrc
 function _update_ps1() {
       export PS1="$(~/dotfiles/powerline-shell/powerline-shell.py $? 2> /dev/null)"
    }

    export PROMPT_COMMAND="_update_ps1"

設定

ここで、powerline-shell/config.pyを編集すると、プロンプトの表示をカスタマイズできます。

表示したくないものは、コメントアウトしていきましょう。

~/dotfiles/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:flag_mm:ss
%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}

次に、注目すべきポイントとしては、バージョン管理の書式です。

例えば、以下の様な記述があったとします。

bash
 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

カッコいいプロンプトができたら、是非教えて下さい。

39
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
39