Open5
zshに移行日記
Zsh に移行
VSCode terminal で Bash が遅い
Windows で Bash (MSYS) を使っていたけれど、何故かどうにも VSCode のターミナルで Bash が非常に反応が遅いという事態になった。
代わりにzsh にしてみたらこちらは反応速度が特に変わらなかったので、 zsh に移行することにした。
Starship
~/.zshrc
に以下を記述
eval "$(starship init zsh)"
なお、 Starship は過去に pacman -S mingw-w64-x86_64-starship
で入れたと思われる。
Starship より、 zsh の場合は Oh My ZSH! という奴が便利なのかな?
履歴の検索
zsh で履歴検索が Ctrl+R でできると聞いたのだが、そもそも履歴が残らない。
以下を .zshrc に記載する必要があるのかな。
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
setopt share_history
setopt append_history
Oh My ZSH!
Oh My ZSH! を入れてみたが、Starship以上にゆたぽんフォントと相性が悪いっぽい。
- Cascadia Mono:
- ゆたぽん:
ZSH_THEME
ZSH_THEME を amuse にしたらゆたぽんでも問題なくなった。
Oh My ZSH! は結局やめた
これ入れてるだけでだいぶ起動が遅くなるな?
こう、 Emacs と違って流石にシェルは高速で起動してほしい。
というわけで Oh My ZSH! は結局やめた。
他のプラグイン
コマンドの自動補間
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
echo "source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh" >> ~/.zshrc
シンタックスハイライト
git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.zsh/zsh-syntax-highlighting
echo "source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc
peco
検索履歴の強化
peco というプログラムを組み合わせて Emacs の anything みたいな履歴検索ができる。
素晴らしい。気に入った。
Windows の場合 peco は Scoop でサクっと入った。
scoop install peco
~/.zshrc
に以下を記入。
function peco-select-history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
BUFFER=$(\history -n 1 | \
eval $tac | \
awk '!a[$0]++' | \
peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
autojumpはいいかな。私は結局ブックマーク的なやつとかも全然使わないし……
過去に移動したディレクトリへの移動
上記の cd を peco で選択する機能をコピペ。 なお、 cdr を使うには、 .zshrc に以下を追加しておく。
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
.zshrc
取りあえずこうなった。
eval "$(starship init zsh)"
export LANG=ja_JP.UTF-8
alias ls='ls --color'
alias ll='ls --color -lah'
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
setopt share_history
setopt append_history
setopt hist_ignore_dups
#peco
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
function peco-select-history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
BUFFER=$(\history -n 1 | \
eval $tac | \
awk '!a[$0]++' | \
peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
function peco-get-destination-from-cdr() {
cdr -l | \
sed -e 's/^[[:digit:]]*[[:blank:]]*//' | \
peco --query "$LBUFFER"
}
function peco-cdr() {
local destination="$(peco-get-destination-from-cdr)"
if [ -n "$destination" ]; then
BUFFER="cd $destination"
zle accept-line
else
zle reset-prompt
fi
}
zle -N peco-cdr
bindkey '^u' peco-cdr
### plugin ###
# git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.zsh/zsh-syntax-highlighting
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh