LoginSignup
0
1

More than 3 years have passed since last update.

#zsh PROMPTの気に入らないところだけ直す/時計代わりにする

Last updated at Posted at 2020-07-17

zshのプロンプトを編集しようと思ったのだが、zshenvにもzshrcにもPROMPTの定義が見つからず、いちから再定義するとよかったところまで消えた。いいとこ取りしたい時にどうすれば?と言う記事です。

現在のPROMPTの値を取得

シェルで
$ echo $PROMPTとすると、現在のPROMPTの値が返ってくるのでこれをコピーする。

echo.sh
$ > echo $PROMPT
${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{5}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]}

次に$ vi ~/.zshenvとして以下のような行を追記する。

zshenv.sh
PROMPT='${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{5}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]} '

これで再現は完了。(''で括るのと、末尾の空白を忘れないように)

現在の時刻をプロンプトに表示し、1秒おきに更新

これを以下の3行のように変更すると、プロンプトが常に最新の時刻を表示するようになる。

zshenv.sh
PROMPT='%F{6}%D %*%f ${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{5}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]} '
TMOUT=1
TRAPALRM() { zle reset-prompt }

スクリーンショット 2020-07-17 12.07.32.png

ん〜。便利!

  • プロンプトには常に現在時刻が入ることになる
  • 時刻は改行した時点で確定するのでいつそのコマンドを打ったか後で遡れる
  • 作業に没頭して予定や約束に遅れるというようなことを防止できると考える
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1