追記-2021/07/25
Git表示とプロント表示を変更
参考サイト:
zshプロンプトをカスタマイズ、色と改行とgit対応で見やすくする【Mac】2021.04.22
追記-2021-11-06
最近知ったのですが、macを使っている人はこちらを使っている方が多いようです。
私も現在は Starshipを使用しているのでおすすめです。
https://starship.rs/
追記-2022-6-9(木)
starship は macの場合brewでインストールできます。
Starship step1/2
# brew install (通常はこっちだけ)
brew install starship
# Lastest version(最新版を自分でインストールする場合はこっち)
curl -sS https://starship.rs/install.sh | sh
Starship step2/2
Starshipをシェルにセットアップ
# これはzshの設定
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
これだけでとても綺麗なプロンプトになると思います。
詳細な設定もできるのでぜひ StartshipのHPに訪れてください。
本題
macbookAirを購入したばかりの頃にbashの入力欄をカスタマイズできることを知り、久しぶりに.zshrcで挑戦した時の備忘録。
当時意外と悩んだので簡単にまとめておきます。
今回参考にしたのはこの2つのサイト
https://zsh-prompt-generator.site/
https://qastack.jp/unix/53789/whats-the-newline-symbol-in-zshs-ps1
1つ目がzsh-prompt(プロンプトと呼ぶみたいです)を直感的に作成できるジェネレイトサイト
2つ目が意外とハマってしまった改行の仕方
どうしていまさら?
今まで .bash_profile PS1
と検索しており、めぼしい情報がなく尚且ちょっと仕様が古いものばかりでまともにカスタマイズできなかった。
さらにmacの~/.zshrc
に設定したexport PS1=''
が動いてしまったのが勘違いに拍車をかけてしまった。
正確にはbashのものは動かなかったのだが手探りで試し動くオプションを見つけ使用していた。
使用方法
vim ~/.zshrc
# 一番頭付近に追加
PROMPT="%B%F{214}%n%f%b on %B%F{86}%m%f%b in %~"
2行表示させるには?
今回は改行し、下の行で入力をさせたい。
サイト2を参考にし$'\n'
を追加。
PROMPT="%B%F{214}%n%f%b on %B%F{86}%m%f%b in %~"
# と
PROMPT="%B%F{49}➜ %f%b"
# を $'\n' を使いつなげたい
# 下に記述の ~/.zshrc のようにする。
# 一番頭付近に追加
PROMPT="%B%F{214}%n%f%b on %B%F{86}%m%f%b in %~"$'\n'"%B%F{49}➜ %f%b"
ターミナルを新規で起動もしくは読み込んで上げれば完成です。
お疲れさまでした。
bashからzshに変わりPS1がプロンプトへ呼び名が変わる。
改めてzsh プロンプト
で検索すると色々ヒットしますね。楽しそう
追記 -- 2020/11/21
ラズパイのターミナル(.bashrc)を設定したので参考になればとメモを残しておく。
(.bashrc)のPS1設定で参考にしたサイト
https://qiita.com/hmmrjn/items/60d2a64c9e5bf7c0fe60
https://qiita.com/HMMNRST/items/d8fe7b3c528f447d68a6
https://scriptim.github.io/bash-prompt-generator/
ちなみに文字のカラー設定が.bashrcだと8色しかないように思えたが
[参考サイト3] (https://scriptim.github.io/bash-prompt-generator/ "Link_3")のカラーパレットでかなりの色を選択できたため問題ないのかもしれない?
今回は下記の形で作成していく
(時間24H) username on hostname ~
→ $ 入力欄
.bashrc PS1設定の編集位置の把握
echo "$PS1"
実行し表示された位置を.bashrcから探していくと60行目に確認できたのでここを編集していく
表示された文字列は少し違うが大丈夫だと思う
vim ~/.bashrc
[参考サイト3] (https://scriptim.github.io/bash-prompt-generator/ "Link_3")を使用しPS1を作成していく。このサイト便利すぎる
~/.bashrc
の自分の場合60行目をコメントアウトし、その下にサイト3で作成したものをコピー貼り付け
vimの場合 escを一度押し Shift押しながら:w で保存 Shift押しながら:q でvimから抜ける
PS1='\[\e[0m\](\[\e[0;2;38;5;122m\]\A\[\e[0m\])\[\e[m\] \[\e[0;1;38;5;216m\]\u\[\e[0m\] on \[\e[0;1;38;5;216m\]\h\[\e[0m\] in \[\e[0;38;5;74m\]\w\[\e[m\]\n\[\e[0;38;5;74m\]➜ \[\e[0;38;5;74m\]\$\[\e[m\] \[\e0'
source ~/.bashrc
で読み込み設定が反映されていれば成功です。お疲れさまでした。
色はもしかしたら8色で表現されているかもしれないですね
コメントアウトしておくことで元に戻したいときに簡単に戻せるので初学者の方は前の設定は消さずにコメントアウトすることをおすすめします。
追記-2021/07/25
Git表示とプロント表示を変更
参考サイト:
zshプロンプトをカスタマイズ、色と改行とgit対応で見やすくする【Mac】2021.04.22
git の補完機能
echo 'ファイルの格納場所' && \
mkdir -p ~/.zsh/completion/ && \
echo 'ファイルをダウンロード' && \
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.zsh/completion/git-completion.zsh && \
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -o ~/.zsh/completion/git-prompt.sh && \
echo 'ファイルの権限を変更' && \
chmod a+x ~/.zsh/completion/git-prompt.sh && \
chmod a+x ~/.zsh/completion/git-completion.zsh && \
echo '移動しリネーム' && \
mv ~/.zsh/completion/git-completion.zsh ~/.zsh/completion/_git && \
echo '.zcompdump を一旦削除' && \
rm -f ~/.zcompdump
補完機能を自動的に起動するように .zshrc へ追記
fpath=(~/.zsh/completion $fpath)
autoload -Uz compinit
compinit -u
最後に設定を記述した.zshrcを再読み込み
source ~/.zshrc
下準備1-プロントのカスタマイズ
使える色からそれぞれに使用したい色を選ぶ
1 UserName
2 HostName
for c in {000..255}; do echo -n "\e[38;5;${c}m $c" ; [ $(($c%16)) -eq 15 ] && echo;done;echo
私は下記を選びました
1 UserName 214 オレンジ
2 HostName 086 蛍光色の水色
下準備2-プロントのフォント変更
cd ~/ && \
git clone https://github.com/powerline/fonts && \
cd fonts && \
./install.sh && \
echo 'フォントのキャッシュクリア' && \
fc-cache -vf
ターミナルの設定画面でフォントを「DejaVu Sans Mono Powerline」に変更
echo "\ue0b0 \u00b1 \ue0a0 \u27a6 \u2718 \u26a1 \u2699"
プロントのカスタマイズ設定
~/.zshrc
に下記を書き込んでください。
書き込みが出来たらsource ~/.zshrc
で読み込めば完成です。
# Git保管機能の設定 ▼▼ここから▼▼ >>>>>
fpath=(~/.zsh/completion $fpath)
autoload -Uz compinit
compinit -u
# Git保管機能の設定 ▲▲ここまで▲▲ >>>>>
function left-prompt {
name_t='214m%}' # user name text clolr
name_b='000m%}' # user name background color
path_t='255m%}' # path text clolr
path_b='031m%}' # path background color
arrow='087m%}' # arrow color
text_color='%{\e[38;5;' # set text color
back_color='%{\e[30;48;5;' # set background color
reset='%{\e[0m%}' # reset
sharp="\uE0B0" # triangle
user="${back_color}${name_b}${text_color}${name_t}"
dir="${back_color}${path_b}${text_color}${path_t}"
echo "${user}%n%f%b on %B%F{086}%m%f%b ${back_color}${path_b}${text_color}${name_b}${sharp} ${dir}%~ ${reset}${text_color}${path_b}${sharp}${reset}\n${text_color}${arrow}➡ ${reset}"
}
PROMPT=`left-prompt`
# コマンドの実行ごとに改行
function precmd() {
# Print a newline before the prompt, unless it's the
# first prompt in the process.
if [ -z "$NEW_LINE_BEFORE_PROMPT" ]; then
NEW_LINE_BEFORE_PROMPT=1
elif [ "$NEW_LINE_BEFORE_PROMPT" -eq 1 ]; then
echo ""
fi
}
# git ブランチ名を色付きで表示させるメソッド
function rprompt-git-current-branch {
local branch_name st branch_status
branch='\ue0a0'
color='%{\e[38;5;' # 文字色を設定
green='114m%}'
red='001m%}'
yellow='227m%}'
blue='033m%}'
reset='%{\e[0m%}' # reset
color='%{\e[38;5;' # 文字色を設定
green='114m%}'
# ブランチマーク
if [ ! -e ".git" ]; then
# git 管理されていないディレクトリは何も返さない
return
fi
branch_name=`git rev-parse --abbrev-ref HEAD 2> /dev/null`
st=`git status 2> /dev/null`
if [[ -n `echo "$st" | grep "^nothing to"` ]]; then
# 全て commit されてクリーンな状態
branch_status="${color}${green}${branch}"
elif [[ -n `echo "$st" | grep "^Untracked files"` ]]; then
# git 管理されていないファイルがある状態
branch_status="${color}${red}${branch}?"
elif [[ -n `echo "$st" | grep "^Changes not staged for commit"` ]]; then
# git add されていないファイルがある状態
branch_status="${color}${red}${branch}+"
elif [[ -n `echo "$st" | grep "^Changes to be committed"` ]]; then
# git commit されていないファイルがある状態
branch_status="${color}${yellow}${branch}!"
elif [[ -n `echo "$st" | grep "^rebase in progress"` ]]; then
# コンフリクトが起こった状態
echo "${color}${red}${branch}!(no branch)${reset}"
return
else
# 上記以外の状態の場合
branch_status="${color}${blue}${branch}"
fi
# ブランチ名を色付きで表示する
echo "${branch_status}$branch_name${reset}"
}
# プロンプトが表示されるたびにプロンプト文字列を評価、置換する
setopt prompt_subst
# プロンプトの右側にメソッドの結果を表示させる
RPROMPT='`rprompt-git-current-branch`'