Closed8
fishからzshに移行する
6年くらい fish を使ってたけど、MacBook 買い替えのタイミングで zsh に戻ろうと思う。デフォルトのシェルだし、fish は POSIX準拠じゃないのでシェルスクリプトが実行できなかったりして辛いところがあった。
oh-my-zsh を使おうとしていたけど、zplugの方が優秀っぽいのでそちらを採用する
環境変数は .zshenv
に書くと良いらしい
コンソールは Spaceship をインストールして使う。フォント周りの設定が事前に必要なので、FiraCode をインストールして iTerm2 の設定も変更する
Spaceship は色々と設定ができる
最低限設定をしておいた
- 時間表示
- ユーザーネーム表示
- パスを省略しない
- 常に一行改行を追加する
# .spaceship.zsh
# Display time
SPACESHIP_TIME_SHOW=true
# Display username always
SPACESHIP_USER_SHOW=always
# Do not truncate path in repos
SPACESHIP_DIR_TRUNC_REPO=false
SPACESHIP_PROMPT_SYMBOL="➜"
SPACESHIP_PROMPT_ADD_NEWLINE=true
SPACESHIP_PROMPT_SEPARATE_LINE=true
SPACESHIP_PROMPT_PREFIXES_SHOW=true
SPACESHIP_PROMPT_SUFFIXES_SHOW=true
zsh の ls
の設定と、表示されるディレクトリとファイルで色を変える。 -a
オプションもデフォルトでつける。
.zshrc
の該当する部分はこんな感じ
alias ls='ls -aGF'
export LSCOLORS=cxfxcxdxbxegedabagacad
補完周りは fish に近づけたいので、これを参考にする
zplug "zsh-users/zsh-syntax-highlighting"
zplug "zsh-users/zsh-autosuggestions"
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#c6c6c6,bg=#106a84,bold,underline"
enter を押した時とcd
した時 に ls
と git status -sb
を表示する設定を .zshrc
に追加する
function inner_enter {
echo
ls
if [ "$(git rev-parse --is-inside-work-tree 2> /dev/null)" = 'true' ]; then
echo
echo -e "\e[0;33m--- git status ---\e[0m"
git status -sb
fi
}
function do_enter() {
zle accept-line
if [ -z "$BUFFER" ]; then
inner_enter
fi
}
zle -N do_enter
bindkey '^m' do_enter
bindkey '^j' do_enter
chpwd() {
if [[ $(pwd) != $HOME ]]; then;
inner_enter
fi
}
enterを押すとこんな感じに出力される
細かいところの設定を .zshrc
に追加。
補完に隠しファイルを表示するのと、ビープ音を鳴らさないようにする
setopt globdots
setopt NO_BEEP
pecoも .zshrc
に設定する
自分は候補が下に表示される方が嬉しいので、 --layout=bottom-up
を設定。
function peco-select-history() {
BUFFER=$(\history -n -r 1 | peco --query "$LBUFFER" --layout=bottom-up)
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
dotfileレポジトリで保存
.zshrc
だけに全て書かずに、alias.zsh
, console.zsh
, plugin.zsh
に分けて、.zshrc
の先頭で source するように変更した。
source "$DOTFILES_PATH/zsh/plugin.zsh"
source "$DOTFILES_PATH/zsh/alias.zsh"
source "$DOTFILES_PATH/zsh/console.zsh"
このスクラップは2023/02/18にクローズされました