シェルのプロンプトは改行しようぜ
シェルプロンプトの改行はとても便利。
改行のすすめ
zshでは、プロンプトをコマンドラインの右側にも表示できる。しかも、入力文字列が長くなって右側のプロンプトにかぶった時、プロンプトは消える。なので、カレントディレクトリが深くなったときに長いコマンドを入力しても、入力を一行で表示できやすい。
この「深いカレントディレクトリ」問題は、「プロンプトを改行して二行にする」ことで、もっとスマートに解決できる。例えば、プロンプトの一行目にカレントディレクトリを、二行目に"$"を表示させるようにすれば、カレントディレクトリが深くなっても、入力文字列を一行で表示できやすい。その上、zshの右プロンプトと違って、表示が消えたりもしない。さらに、プロンプトの改行ならbashにだって可能なのだ。
というわけで、自分のbashでは以下のようにプロンプトを表示させている。
[myhost: ~/research/project/]
$
myhostはホスト名、~以下はカレントディレクトリ。カーソルは、二行目の$の二つ右にあると思ってもらいたい。
こういう表示にするには、.bashrc に以下の設定を書けばよい。
# set prompt ## \[ ... \] : encloses control sequence with \[ and \] for accurate word wrap ## \033[xxm : changes the color of command line ## \h : the hostname up to the first "." ## \w : current working directory ## \n : newline ## \$ : "$" for non-root, "#" for root # 間違った設定 (2009-10-01コメントアウト) #export PS1='\[\033[31m[\h: \w]\n\$\033[30m\] ' # 正しい設定 (2009-10-01追加) export PS1='\[\033[31m\][\h: \w]\n\$\[\033[30m\] '
ちなみに、\[ ... \] で色変更の制御文字列を囲むのを絶対に忘れてはいけない。これを忘れると、コマンドラインのヒストリ検索を行った際に、表示がおかしなことになる。自分はこの現象の原因がわからなくて2年間積んだ。