プロンプトを Lisp で書きたい 1
とりあえず、こんなのやりたい、というのを書いておきます。
bash のプロンプトは通常
$
だけの簡素なものですが、ここには様々な情報を表示することができます。
hebiyan@localhost.example.com
/home/hebiyan:$
この例ではユーザ名、サーバ名、カレントディレクトリを二行にわたって表示させています。
プロンプトには、更に色をつけることもできます*1。
hebiyan@localhost.example.com
/home/hebiyan:$
こんなふうに。
さて、プロンプトの設定は bash の設定ファイルで行います。
上の例のように表示させるには、設定ファイルにこう書きます。
PS1="\[\e[0;31m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]\n\[\e[1;36m\]\w\[\e[0m\]\$ "
ね、簡単……
……じゃねえ。
こんなの書いてられません。「赤は 31 、水色は 36 ……」なんて憶えるのは無理。
そこで、式の右辺、"\[\e...\$ " の部分をこう書けるようにします。
(prompt (red username) "@" (green hostname :bright t) newline (cyan abs-path :bright t) prompt-char)
まあわかりやすい。
表示したい情報もつけたい色も、名前をそのまま書けば OK、直観的。
でも Lisp で動かすから遅いんでしょ?
そんなあなたも安心。
私の環境*2では 45 ミリ秒、3 フレーム弱で完了します。ほとんど誤差ですね☆
……というスクリプトを Lisp でどう書いたか、という話を小出しにしながら、ちまちま書いていこうと思っています。
よろしくお願いします。次いつ書くかは未定です。