peco を使って zsh でコマンド履歴を便利にする
2023-08-31
635 words
2 mins read
目次
- 1 この文書の設定できること
- 2 参考文献
- 3 確認環境
- 4 peco のインストール
- 5 Zsh で peco を使うための設定
- 6 使用方法
私はシェルとして Zsh を使っています。 Zsh はコマンド補完がありますが、peco を使うと、 コマンドの履歴を便利に選択することができます。
下の図では apt
とタイプした後に =Ctl-r" をタイプしています。
コマンド補完の候補が出てくるのがわかります。
ここでコマンドを選択するために Emacs のキーバインディングを 使うことができます。
1 この文書の設定できること
- コマンド履歴の検索 (Ctl+r)
- cd の履歴の検索 (Ctl+f)
2 参考文献
以下のサイトを参考にさせていただきました。
- peco/peco: Simplistic interactive filtering tool : peco 本家
- Mac | zshとpecoでコマンド入力作業を快適に - わくわくBank : zsh から peco を使う方法が詳しくのっています。
3 確認環境
確認した環境です。 私は Ubuntu MATE を使っていますが、Windows でも動くようです。
- Host OS : Windows11 Pro
- Guest OS : Ubuntu Mate 23.04 on VirtualBox
4 peco のインストール
peco をインストールするには次のようにします:
sudo apt -y install peco
5 Zsh で peco を使うための設定
~/.zshrc
に以下を追加します。
# ---------------------------------------
# peco
# https://www.instagram.com/pecotecooo/?hl=en
# ---------------------------------------
# A function for command history (Ctl-r)
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 | \
peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen1
}
zle -N peco-select-history
bindkey '^r' peco-select-history
# Setup 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
# cd history (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
# ---------------------------------------
6 使用方法
- コマンド履歴の検索 (Ctl+r)
- cd の履歴の検索 (Ctl+f)
Related Articles:
- 2023/08/31 Ubuntu Mate Tips