コマンド結果をフィルタリングしてくれます。
$ brew install peco
ps aux | peco
function find_cd() { cd "$(find . -type d | peco)" } alias fc="find_cd"
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-screen } zle -N peco-select-history bindkey '^r' peco-select-history
過去移動したディレクトリに移動します。
ctrl-fにバインドしています。
# 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 zstyle ':chpwd:*' recent-dirs-file "$HOME/.cache/chpwd-recent-dirs" fi
# ### search a destination from cdr list function peco-get-destination-from-cdr() { cdr -l | \ sed -e 's/^[[:digit:]]*[[:blank:]]*//' | \ peco --query "$LBUFFER" } ### search a destination from cdr list and cd the destination function peco-cdr() { local destination="$(peco-get-destination-from-cdr)" if [ -n "$destination" ]; then #BUFFER="cd $destination" BUFFER="cd `echo $selected_dir | awk '{print$2}'`" zle accept-line else zle reset-prompt fi } zle -N peco-cdr bindkey '^f' peco-cdr
alias s='ssh $(grep -iE "^host[[:space:]]+[^*]" ~/.ssh/config|peco|awk "{print \$2}")'
function peco-ssh () { local selected_host=$(awk ' tolower($1)=="host" { for (i=2; i<=NF; i++) { if ($i !~ "[*?]") { print $i } } } ' ~/.ssh/config | sort | peco --query "$LBUFFER") if [ -n "$selected_host" ]; then BUFFER="ssh ${selected_host}" zle accept-line fi zle clear-screen } zle -N peco-ssh bindkey '^\' peco-ssh
function peco-ssh () { local selected_host=$(awk ' tolower($1)=="host" { for (i=2; i<=NF; i++) { if ($i !~ "[*?]") { print $i } } } ' ~/.ssh/config | sort | peco --query "$LBUFFER") if [ -n "$selected_host" ]; then ssh ${selected_host} fi }
migemoを使うことで、ローマ字入力のまま日本語をインクリメンタルサーチすることができます。
表示されるまでに、一瞬待たされます。
https://github.com/peco/migemogrep
$ brew tap peco/peco #公式以外のリポジトリをフォーミュラとしてHomebrewに追加する $ brew install migemogrep または $ go install github.com/peco/migemogrep@latest
~/.config/peco/config.json
{ "CustomFilter": { "cmigemo": { "Cmd": "migemogrep", "Args": [ "$QUERY" ], "BufferThreshold": 10000 } }, "keymap": { "C-j": "peco.SelectDown", "C-k": "peco.SelectUp", "C-f": "peco.ScrollPageDown", "C-b": "peco.ScrollPageUp" } }
ctrl + rで選択できるfilterにMigemoが追加されて、ローマ字から日本語の文章をサーチすることができるようになります。
{ "CustomFilter": { "cmigemo": { "Cmd": "migemogrep", "Args": [ "$QUERY" ], "BufferThreshold": 10000 } }, "InitialFilter": "Migemo" }
https://github.com/mattn/peco-cmigemo
.zshrc
export PATH=$PATH:$HOME/bin
$ brew install go $ go install github.com/mattn/peco-cmigemo@latest $ cp ~/bin/peco-cmigemo ~/.peco/peco-cmigemo または $ go build peco-cmigemo.go $ brew install cmigemo $ ln -s /usr/local/opt/cmigemo/share/migemo/utf-8 ~/.peco/dict # homebrewで入れたcmigemoの辞書へシンボリックリンク
~/.config/peco/config.json
{ "CustomMatcher": { "C/Migemo": [ "c:/dev/peco-cmigemo/peco-cmigemo.exe", "$QUERY" ] } }
実行モジュール peco-cmigemo と cmigemo が使う辞書(UTF-8である必要があります)は同じ位置に dict/migemo-dict という形で置く必要があります。
$HOME/.config/peco/config.json
{ "keymap": { "C-j": "peco.SelectDown", "C-k": "peco.SelectUp", "C-f": "peco.ScrollPageDown", "C-b": "peco.ScrollPageUp" } }