🛠️
Zsh 動かせるカスタマイズの森
背景
現在、shellはzshを主に使用しています。
普段、ディレクトリ移動やdockerを起動する度にコマンド打つのめんどいなぁと感じるようになってきました。そこで、環境を改良するためにzshのカスタマイズを少しずつ進めた過程を紹介します。
これからzshをカスタマイズしたい人向けに書いていきます。
zshをカスタマイズしていくために、.zshrcファイルを編集する必要があります。
隠しファイルのため、普段はfinderに表示されません。
ターミナルを起動させて、
vim ~/.zshrc
と打ち込んで、編集していきます。
以下、貼っていくコマンドをコピペすること利用することができます
プラグイン
Zplug プラグインマネージャー
プラグインマネージャーとしてzplugを使用しています。(oh-my-zshでも可)
上のページの通りにzplugをインストール後、.zshrcに以下のコードを追加します。# zplugを使う
source ~/.zplug/init.zsh
# ここに使いたいプラグインを書いておく
# zplug "ユーザー名/リポジトリ名", タグ
zplug "zsh-users/zsh-completions"
# 入力途中に候補をうっすら表示
zplug "zsh-users/zsh-autosuggestions"
# コマンドを種類ごとに色付け
zplug "zsh-users/zsh-syntax-highlighting"
# 自分自身をプラグインとして管理
zplug "zplug/zplug", hook-build:'zplug --self-manage'
# コマンドをリンクして、PATH に追加し、プラグインは読み込む
zplug load –verbose
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
下記コマンドをターミナルで打ち込むと.zshrcの設定を反映させることができます。
source ~/.zshrc
zshの設定
私がzshを使用している時に、「長いコマンド打ち込むのは時間かかるなぁ」や「先週使用したコマンドってどんなやつだっけ」などあり、その度にググっていました。それを解消するために、以下のコードを設定しています。
個人的に便利ランキングNo.1はpecoです。
これのおかげで過去に打ち込んだコマンドを補完してくれるため、作業効率が上がります!!!!
# options
setopt auto_list
# setopt share_factory
setopt hist_ignore_all_dups
# peco with zsh setting
# コマンド履歴件数
HISTFILE=$HOME/.zsh-history
HISTSIZE=100000
SAVEHIST=1000000
# 過去に実行したコマンドを選択。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
# search a destination from cdr list
function peco-get-destination-from-cdr() {
cdr -l | \
sed -e 's/^[[:digit:]]*[[:blank:]]*//' | \
peco --query "$LBUFFER"
}
### 過去に移動したことのあるディレクトリを選択。ctrl-uにバインド
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
########一般の設定##########
# 日本語ファイル名を表示可能にする
setopt print_eight_bit
# 直前と同じコマンドの場合はヒストリに追加しない
setopt hist_ignore_dups
# 補完機能を有効にする
autoload -Uz compinit
compinit -u
if [ -e /usr/local/share/zsh-completions ]; then
fpath=(/usr/local/share/zsh-completions $fpath)
fi
# 補完で大文字にもマッチ
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
# mkdirとcdを同時実行
function mkcd() {
if [[ -d $1 ]]; then
echo "$1 already exists!"
cd $1
else
mkdir -p $1 && cd $1
fi
}
これからどんどん使用していくので、随時追加していきます。
Discussion