zsh を使う

2017年6月3日

はじめに

zsh を使うメモ。

シェルの変更

シェルを zsh に変更する。

$ sudo apt-get install zsh
...
$ chsh
パスワード:
新しいシェル [/bin/bash]: /bin/zsh

ログインしなおすとシェルが変更される。~/.zshrc がないので、端末起動後いくつか質問される。とりあえず 2 を押して .zshrc のひな型を作ってもらう。

シェルの設定

.zshrc を編集する。

プロンプトを好みのものに変更する。

#prompt adam1
prompt clint

プロンプトの例は以下のコマンドで確認できる。

$ prompt -p

PROMPT 変数で直接プロンプトを指定することもできる。

PROMPT="%B%{^[[32m%}%n %{^[[34m%}\$%{^[[m%}%b "
RPROMPT="%B%{^[[34m%}[%/]%{^[[m%}%b "

上記は個人的なお気に入り設定。ここで "^[" はエスケープで、vi では "Ctrl+V Esc" で入力する。% とそれに続く 1 文字で 1 つの指示を表す。たとえば "%n" はユーザー名、"%{^[[32m%}" は緑色を表す。 RPROMPT はコマンドの右側に表示される。ここではプロンプト文字を "$" としている。"%" とする場合は PROMPT を以下のように設定する。

PROMPT="%B%{^[[32m%}%n %{^[[34m%}%#%{^[[m%}%b "

ユーザー名のあとにホスト名 ("%m") を付けたい場合は、次のようにする。

PROMPT="%B%{^[[32m%}%n@%m %{^[[34m%}\$%{^[[m%}%b "

オプションで "sharehistory" が設定されていると複数のシェルで履歴が共有される。うっとうしいときがあるので、無効にする。

#setopt histignorealldups sharehistory
setopt histignorealldups

"histignorealldups" は、同じコマンドを連続して実行しても履歴としては 1 回しか出てこないようにする。

"setopt magic_equal_subst" を追加。これはコマンドラインオプションで "--prefix=/usr/local" のような入力をするときにも補完を有効にする。

setopt magic_equal_subst

ls で色が付くように以下を追加。

alias ls='ls --color=auto'

※macOS の場合

alias ls='ls -FG'