zshに移行中

zshの設定をする暇が無くてbashとzshを併用していたのだけれども、ぼちぼちzshにシフトできてきた。

一番困っていたのが、補完候補を表示してくれるだけで良いのに勝手に入力までされちゃう機能。シーケンシャルな選択は( ゚Д゚)マンドクセー。これは

unsetopt AUTO_MENU

で解決。

次にプロンプト。常に自分のいるディレクトリは表示しておいて欲しいのですが、入力開始位置がずれるのが嫌なので単純にプロンプトにディレクトリ表示を追加するのはダメで、bashでは2段プロンプトにしていました。zshでは右側に表示されるプロンプトもあるのですが、鬱陶しいのでzshでも2段プロンプトにしました。

PS1=$'%{\e[0;32m%}%(2L.[%L].)%n%u@%m:\%{\e[0m%}%{\e[0;33m%}%~%{\e[0m%}\n%# '

おまけで

  • 色付け
  • シェルレベルが2以上の場合は、先頭に[2]のようにシェルレベルを表示

ってのをやっています。ちなみにエスケープシーケンスを有効にするには「$'...'」という文字列形式を使うのだそうです。


(~/rootの説明は別エントリで書きます)

あとは、

setopt AUTO_PUSHD

# おまけ
unsetopt AUTO_CD         # そんなおせっかいはいらん
setopt PUSHD_IGNORE_DUPS # 同じ奴は無視してくれ

で自動pushdを有効にしました。

最後に/etc/passwdを/bin/bashから/bin/zshに変更しました。

また、aliasや環境変数はbashと同じ書式で書けるので、それぞれ~/.aliases、~/.envとして独立させました。昔tcshとbashを併用していた時を思い出したり。