LoginSignup
30
10

More than 5 years have passed since last update.

お前らのターミナルは可愛くない

Posted at

ターミナルは、毎日向き合うものです。
そのターミナルが味気ないものであると、毎日も味気なくなります。

ということで、ターミナルを可愛くしましょう。

zshのプロンプト変数について

zshには、PROMPTRPROMPTという2つのプロンプト変数を持っています。
PROMPTが左、RPROMPTが右のプロンプトの内容を定義するものです。

$ PROMPT="人の金で焼き肉が食べたい!! "

こうコマンドを打とうものなら、ターミナルが欲望に溢れたものとなります。
k.png

もうなにがなんだか、わかりません。

色・状態変数

プロンプト変数の中では、表示される時の色を指定できる特殊な記法があります。

文字色の場合は%F{}の中に、背景色の場合は%K{}の中にカラーネームを入力します。
色のリセットをしたい場合は、%k%fを使います。
また、%~を使うことで、カレントディレクトリのパスを取得できます。

以下のようにコマンドを打ちます。

$ PROMPT="%K{black}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が%F{white}食べ%F{green}たい!! %~ "

こうなります。

k.png

RPROMPTについて

RPROMPTは、右側のプロンプトです。文字をRPROMPTにぶつかるまで入力し続けると、自動で消える便利な性質があります。
また、最新の行にしか表示されません。

$ PROMPT="%K{black}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
$ RPROMPT="%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"

k.png

SSHしているときに表示

以下をzshrcに追記します。

if [[ -n "${REMOTEHOST}${SSH_CONNECTION}" ]];then
  ISSSH="%K{yellow}%F{black}SSH %k%f"
fi

PROMPT="%K{black}${ISSSH}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
RPROMPT="%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"

k.png

rootのときに表示

if [ ${UID} -eq 0 ]; then
  ISROOT="%K{red}%F{black}ROOT %k%f"
fi

PROMPT="%K{black}${ISROOT}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
RPROMPT="%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"

k.png

gitブランチを表示させる

zshrcに以下のように追記します。
( http://d.hatena.ne.jp/holidays-l/20100323/p1 を参考)

preexec() {
  _pre="$1"
}
precmd(){
        _r=$?
        case "${_pre}"  in
                cd*|git*|vi*|:)
                        vcs_info
                ;;
        esac
        _pre=""

        return ${_r}
}
        setopt prompt_subst
        zstyle ':vcs_info:*' enable git
        zstyle ':vcs_info:git:*' check-for-changes true
        zstyle ':vcs_info:git:*' stagedstr "%K{yellow}"
        zstyle ':vcs_info:git:*' unstagedstr "%K{red}"
        zstyle ':vcs_info:*' formats "%K{green}%F{white}%c%u[%b]%f"
        zstyle ':vcs_info:*' actionformats '[%b|%a]'
        vcs_info

PROMPT="%K{black}${ISROOT}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
RPROMPT="%f%b%k${vcs_info_msg_0_}%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"

初回と、gitコマンドの実行直後、cdの実行後、vi実行後のみ、現在のブランチ名とファイルの状態を更新・取得します。
赤がステージングに編集したファイルが残っている場合は赤、git addすると黄色、git commitすると緑になります。

k.png

可愛くする

以下のように、「うー」、と「にゃー」の顔文字を色付きで追加します。

# 略
        zstyle ':vcs_info:git:*' stagedstr "%K{white}%F{yellow}" # %c
        zstyle ':vcs_info:git:*' unstagedstr "%K{white}%F{red}"  # %u
        zstyle ':vcs_info:*' formats "%K{black}%F{white}%F{green}%K{white}%c%u[%b]%f"
# 略

UUU="%K{white}%F{black}(」・ω・)」うー"
NYA="\(・ω・\)にゃー!"
PROMPT="${UUU} %K{blue}%F{white} %F{black}%~ %k%F{blue}%f "
RPROMPT='%f%b%k${vcs_info_msg_0_}%F{black}%K{white}%F{white}%K{black} ${NYA} %f'

k.png

これが普段の僕のプロンプトです。

最後に

ニャル子さんかわいい!!!!!!!

30
10
2

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
30
10