:-)
なに、せっかく築き上げた .tcshrc を移植するのが難しそう。そんな君のため にわしが乗り換えガイドをつくって日本語風マ ニュアルパッケージの中に入れておいた。じゃが、せっかくこのページをを 見てくれた君のためにその改訂版を用意し た。もうひとつ、今わしがつこているコマンドライン 補完関数の定義ファイル(.zshcompctl)をおみせしやう。これには、 普段良く使うコマンドの 引数を補完するための記述のエッセンスが詰まっていると思うので、これをパク ればかなりの補完ができるようになるはずじゃ。
まだ迷っている君、tcshが便利だと惚れている君、tcshのカスタマイズならちょっ と自信があるぜいという君、そういう君こそzshのすごさが実感できるはずだ。 かくいうわしも以前はtcshにぞっこんだった。ま、とりあえずいちどつこてみたまえ。
tcshなんてうんこ
だって思っちゃうよ。非常にみーはーだが、わしのシェルプロンプトはカラフルなのだ。これは、zsh自身が疑似乱数 発生できるのと、プロンプトにエスケープシーケンスを通してくれる機構 があるからできる技。さらに他のどのシェルにもない機能として右側プロ ンプトがあり(と思ったらいつの間にかtcshが真似したらしい)、これらは zshユーザであることを他人に見せつけるためには一番楽な技なのでやり 方を教えやう。
結論からいうと .zshrc あたりに
setopt prompt_subst
PROMPT=$'%{\e[$[32+$RANDOM % 5]m%}%U%B$HOST'"{%n}%b%%%{\e[m%}%u "
RPROMPT=$'%{\e[33m%}[%~]%{\e[m%}'
と入れる。$'' は \e などのエスケープシーケンスを記述
できるクォート方式。もちろん\eはESC文字を示す。
以下説明。
まずプロンプトにエスケープシーケンスを通すオプションを立ててお く。これは .zshrc あたりに入れておくとよろし。
setopt prompt_substそしてプロンプトにエスケープシーケンスを含める。色を出すエスケープ シーケンスは、"ESC [ 色番号 m " で、番号と色の対応は標準状態の ktermなら、
となっていて、個人的に赤は暗くて見づらいので使いたくなく、白を出し てもしょうがないので、32〜36番の色が出て欲しい。ので乱数として0〜4 を出すようにしてそれに32を足す。てことで色を乱数で決める部分が、 PROMPTの
30 31 32 33 34 35 36 37 黒 赤 緑 黄 青 紫 水 白
\e[$[32+$RANDOM % 5]m
のところ。zshでは $[ … ] で括った部分は数式として計算してくれる。
すげー。さらにプロンプト文字列中のエスケープシーケンスを括るための
記法 %{ … %} で括れば無事プロンプトの色が変わる。
PROMPTの後半で \e[m でデフォルトの色に戻しておちまい。
もひとつ、RPROMPTで右側につけるプロンプトを設定。これも色をつけ ておけば目立ち度抜群。
ちなみに色をつけるのは見栄えだけの効果しかないかというとそんな ことはなくて、たった今打ったばかりのコマンドの出力がどこから始まる かを見付ける時に一瞬で見分けがつくのでものすごく楽ちん。
man zsh してもオプション変数がいっぱいあって、どれが便利なのか よーわからんというちみのために、「これだけつけときゃじうぶんじゃろ」 オプション一覧。
###
# Set shell options
###
setopt auto_menu auto_cd correct auto_name_dirs auto_remove_slash
setopt extended_history hist_ignore_dups hist_ignore_space prompt_subst
setopt pushd_ignore_dups rm_star_silent sun_keyboard_hack
setopt extended_glob list_types no_beep always_last_prompt
setopt cdable_vars sh_word_split auto_param_keys