58
13

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

.zshrcをいじってターミナルを自分好みにする

Last updated at Posted at 2023-06-27

ターミナル操作時に、
変更点持ったまま他のブランチに移動しちゃったり、
気付いたら就業時間過ぎてたり、
しませんか?

.zshrcをいじって、
🌱または🌼が表示されるようにして、
特定の時間になったら🍣を🥦や🤤にするようにしました。

image.png
↑こんなイメージ。

以前、ターミナルにお寿司を出すでお寿司とブランチ名を表示するところまではやりました。

2行プロンプトにして寿司とブランチ名を表示する
#!/bin/zsh

function git-current-branch {
  local branch_name
  branch_name=`git rev-parse --abbrev-ref HEAD 2> /dev/null`
  if [ -n "$branch_name" ]; then
    echo "%B%F{29}◀%f%K{29}%F{15} $branch_name %f%k%b"
  fi
}

setopt prompt_subst
RPROMPT='%F{99}%D{%H:%M:%S}%f'
PROMPT='%F{33}%~%f `git-current-branch`
 🍣  ▶  '

今回はそこにちょっとだけ手を加えて絵文字が切り替わるようにしたりしました。

なお、Oh My Zsh等のプラグインは利用していません。悪しからず。


git管理下において現在の状態を表示する

変更点持ったままdevelopに移動しちゃったりすることありますよね。
これを事前に気付きやすくします。

シンプルに、変更点があるかないか分かればいいと考え、
変更がある場合は🌼を、なければ🌱を表示するとします。

変更点の有無確認にはgit status -sを利用します。

git status -sで分岐
git_status=`[[ -n $(git status -s) ]] && echo "🌼" || echo "🌱"`

冒頭に載せたシェルのgit-current-branchを書き換えます。

ステータス表示を組み込む
#!/bin/zsh

# show git info
function prompt_git_info {
  branch_name=`git rev-parse --abbrev-ref HEAD 2> /dev/null` || return
  git_status=`[[ -n $(git status -s) ]] && echo "🌼" || echo "🌱"`
  if [ -n "$branch_name" ]; then
    echo "$git_status %B%F{29}◀%f%K{29}%F{15} $branch_name %f%k%b "
  fi
}

setopt prompt_subst
RPROMPT='%F{99}%D{%H:%M:%S}%f'
PROMPT='%F{33}%~%f `prompt_git_info`
 🍣  ▶  '

時間によって🍣を切り替える

気付いたら昼休み取らずに午後入ってたり定時過ぎていたりしますよね。
会議がないフルリモートの日は時間の感覚が鈍りますね。

僕の場合、定時が10~19時で、お昼が14~15時なのでこれに合わせて絵文字を切り替えます。
時間の取得は$(date '+%H')で、条件分岐は-ge-ltで行えます。

時間の取得と分岐
now=$(date '+%H')
if [ $now -eq 14 ]; then
  # 処理
elif [ $now -ge 19 -o $now -lt 10 ]; then
  # 処理
else
  # 処理
fi

この処理を関数として定義し、プロンプトから実行されるようにします。

現在の状態を表示する
#!/bin/zsh

# show git info
function prompt_git_info {
## 略
}

# show icon as time
function prompt_icon_as_time {
  now=$(date '+%H')
  if [ $now -eq 14 ]; then
    echo "🥦"
  elif [ $now -ge 19 -o $now -lt 10 ]; then
    echo "🤤"
  else
    echo "🍣"
  fi
}

setopt prompt_subst
RPROMPT='%F{99}%D{%H:%M:%S}%f'
PROMPT='%F{33}%~%f `prompt_git_info`
 `prompt_icon_as_time`  ▶  '

お昼の一時間は🥦が、就業時間外は🤤が表示されるようになりました。

完成

全体像
#!/bin/zsh

# show git info
function prompt_git_info {
  branch_name=`git rev-parse --abbrev-ref HEAD 2> /dev/null` || return
  git_status=`[[ -n $(git status -s) ]] && echo "🌼" || echo "🌱"`
  if [ -n "$branch_name" ]; then
    echo "$git_status %B%F{29}◀%f%K{29}%F{15} $branch_name %f%k%b "
  fi
}

# show icon as time
function prompt_icon_as_time {
  now=$(date '+%H')
  if [ $now -eq 14 ]; then
    echo "🥦"
  elif [ $now -ge 19 -o $now -lt 10 ]; then
    echo "🤤"
  else
    echo "🍣"
  fi
}

setopt prompt_subst
RPROMPT='%F{99}%D{%H:%M:%S}%f'
PROMPT='%F{33}%~%f `prompt_git_info`
 `prompt_icon_as_time`  ▶  '

さいごに

実際にはAWSのどのプロファイル選択しているかとかそういったものも表示しています。
エイリアスもモリモリ登録していたり。
プラグインは便利ですけど、一つ一つ自分で用意するのも乙かな、と思っている次第です。

絵文字や色はご自身の好みに合わせていじってみてください。
ターミナルの背景色との兼ね合いなどもあると思います。

ちなみに、僕の周りでは🐈か💪の二極化が起きていて、誰も🍣を利用していません。なぜ。

58
13
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
58
13