zsh を vi キーバインドでコマンド履歴検索

シェルも vi キーバインド

普段 Vim を使っていると zsh も vi キーバインドで使いたいものです *1
zsh を vi キーバインドにするためには .zshrc 等に以下の一文を追加します。

bindkey -v

コマンド履歴検索

さらに zsh のコマンド履歴検索を簡単に行うために、.zshrc 等に以下の設定を追加します。
このあたりは 漢のzsh (4) コマンド履歴の検索~EmacsとVi、どっちも設定できるぜzsh | マイナビニュース のコピペなのですが、それだけでも幸せになれます。

autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end

「^P」や「^N」は普通にエスケープして入力します。
たとえば「^P」なら Ctrl + V を押して、続いて Ctrl + P を押せば OK です。
簡単な設定で大きな便利さ。素敵です。

最後に

全然 vi キーバインドと関係なかった。

*1:Vim 使ってる人でもターミナルは emacs バインドのほうが好きという人は多いですが