zshとpecoを活用すると、コマンド入力作業が快適になります。
過去に入力したコマンドを再度実行したいときに特に役立ちますが、設定方法によっては他にも活用方法があります。
目次
できること
まず、今回設定した内容でできることを紹介します。
- コマンド候補の表示(
zsh-autosuggestions
を活用) - コマンドが正常に入力されいてるか色分け表示(
zsh-syntax-highlighting
を活用) - pecoの活用
ctrl + r
で過去に実行したコマンドを選択できるようにする。ctrl + f
で過去に移動したことのあるディレクトリを選択できるようにする。deb
dea
で目的のdockerコンテナに接続
作業
現在のシェル確認
macOS 10.15 Catalina
から zsh
がデフォルトシェルに設定されてます。現在のシェルは以下で確認できます。
$ echo $SHELL
/bin/zsh
インストール
「zshのプラグイン」と「peco」をインストールします。
# zshのプラグインをインストール
brew install zsh-autosuggestions
brew install zsh-syntax-highlighting
# pecoをインストール
brew install peco
pecoの動作確認
pecoの動作確認をします。
以下のように、パイプ(|
)を通じて、他のコマンドの出力内容をpecoの入力内容として渡します。
コマンドの出力結果をフィルタすることができ、目的情報を探しやすくなります。
$ history | peco
zshの設定
次に、zshの設定を行います。~/.zshrc
に設定します。
zshで読み込まれる設定ファイル
touch ~/.zshrc
vi ~/.zshrc
.zshrc
には以下内容を設定しました。
# -------------------------------------------------
# 環境変数設定
export PATH=$PATH
export LANG=ja_JP.UTF-8
# -------------------------------------------------
# -------------------------------------------------
# Alias設定
alias v='vim'
# -------------------------------------------------
# -------------------------------------------------
# オプション設定
# History設定
HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000
setopt share_history
setopt hist_ignore_dups
setopt hist_ignore_all_dups
setopt hist_ignore_space
setopt hist_reduce_blanks
setopt print_eight_bit
# -------------------------------------------------
# -------------------------------------------------
# プラグイン有効化
source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# -------------------------------------------------
# -------------------------------------------------
# pecoの活用1
# ctrl + r で過去に実行したコマンドを選択できるようにする。
function peco-select-history() {
BUFFER=$(\history -n -r 1 | peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
# -------------------------------------------------
# -------------------------------------------------
# pecoの活用2
# cdr自体の設定
if [[ -n $(echo ${^fpath}/chpwd_recent_dirs(N)) && -n $(echo ${^fpath}/cdr(N)) ]]; then
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
zstyle ':completion:*' recent-dirs-insert both
zstyle ':chpwd:*' recent-dirs-default true
zstyle ':chpwd:*' recent-dirs-max 1000
fi
# ctrl + f で過去に移動したことのあるディレクトリを選択できるようにする。
function peco-cdr () {
local selected_dir="$(cdr -l | sed 's/^[0-9]\+ \+//' | peco --prompt="cdr >" --query "$LBUFFER")"
if [ -n "$selected_dir" ]; then
BUFFER="cd ${selected_dir}"
zle accept-line
fi
}
zle -N peco-cdr
bindkey '^f' peco-cdr
# -------------------------------------------------
# -------------------------------------------------
# pecoの活用3
# deで目的のdockerコンテナに接続
alias deb='docker exec -it $(docker ps | peco | cut -d " " -f 1) /bin/bash'
alias dea='docker exec -it $(docker ps | peco | cut -d " " -f 1) /bin/ash'
# -------------------------------------------------
以下の記事情報を参考にさせていただきました。
zshの反映
source ~/.zshrc