zshDay 9

Zshをかわいくする.zshrcの設定


はじめに

仕事などで触っている時間が長いのがエディター、それとシェルです。

今回はそんな触っている時間が長いシェル、かつその中でもZshをかわいくする方法を書いていきます。

なお、この記事は以下の記事を参考にしています。

可愛いzshの作り方 - プログラムモグモグ


完成形

以下の画像の通りとなります。かわいいですね。頑張っている様子が見受けられます。

ちなみに、顔文字のモチーフは過去所属していた会社の社内IRCに住み着いていたunazu_kunというbotが元となっています。

かわいいZsh


プロンプトで使うための関数定義

設定はそれぞれ関数に切り出して各プロンプト内でevalして使う形にすると見やすいかなと思っています。

以下の3つの関数は .zshrc 内に羅列しても構いません。


current_path.zsh

show_current_path () {

local color path

color="${fg[yellow]}"
path="%d"

echo "${color}${path}${reset_color}"
}



status_code.zsh

status_code () {

local color face

color="%(?.${fg[green]}.${fg[blue]})"
face="%(?!(*'-') < !(*;-;%)? < )"

echo "${color}${face}${reset_color}"
}



suggest.zsh

suggest () {

local color yes no abort edit message

color="${fg[red]}"

yes="${fg[green]}そう(y)${reset_color}"
no="${fg[red]}違うよ(n)${reset_color}"
abort="${fg[blue]}やーめた(a)${reset_color}"
edit="${fg[cyan]}直すね(e)${reset_color}"

message="${color}(*'~')?${reset_color} < もしかして ${color}%B%r%b${reset_color} かな? [${yes},${no},${abort},${edit}]: "

echo "${suggest}${message}"
}


自分は環境変数としてzshの設定用ディレクトリを定義し、定義した環境変数を使ってzsh用の設定を読み込むようにしています


.zshrcの設定


.zshrc

# 色設定

autoload -Uz colors && colors

# もしかして機能
setopt correct

# プロンプトが表示されるたびにプロンプト文字列を評価、置換する
setopt prompt_subst

# プロンプト指定
PROMPT='
[%n] `show_current_path`
`status_code`'

# プロンプト指定(コマンドの続き)
PROMPT2='[%n]> '

# もしかして時のプロンプト指定
SPROMPT='`suggest`'