ghqを使ったローカルリポジトリの統一的・効率的な管理について - delirious thoughts をやってみようと思い、ghq と gem-src は無事導入できた。
最近は golang 製の percol である
lestrrat/peco というものがあるらしく、全く使っていない pip を使うよりいいなとやってみたが zsh の連携が出来ない。
function peco-src() {
local selected_dir=$(ghq list --full-path | peco --query "$LBUFFER")
if [ -n "$selected_dir" ]; then
BUFFER="cd ${selected_dir}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-src
bindkey '^S' peco-src
こんなのを
.zshrc
に書いたが、Ctrl-S で起動しないし、直接
peco-src
とやってディレクトリを選択するとエラーになる。
peco-src:zle:4: widgets can only be called when ZLE is active
peco-src:zle:6: widgets can only be called when ZLE is active
あれこれいじったり調べていると、どうも自分の zsh の環境が少しおかしいことに気づく。
% echo $module_path
/usr/lib/zsh/5.0.2/zsh
% zsh --version
zsh 5.0.5 (x86_64-apple-darwin13.0.0)
明らかにおかしい。どうやら、実行しているシェルは Mac に元から入っていた zsh のようだ。
おそらく、購入時に環境設定した時には
chsh -s /bin/zsh
したんだろう。
さっそく、homebrew の zsh に切り替える。
% sudo sh -c "echo /usr/local/bin/zsh" >> /etc/shells
% chsh -s /usr/local/bin/zsh
しかし、下記のエラーが出た。
/Users/pinzolo/.zshenv:1: command not found: rbenv
/Users/pinzolo/.zshenv:2: command not found: pyenv
compinit:183: module `zsh/parameter' has no such feature: `p:dis_patchars': autoload cancelled
compinit:183: module `zsh/parameter' has no such feature: `p:patchars': autoload cancelled
rbenv と pyenv のエラーは
.zshenv
の先頭に
export PATH="/usr/local/bin:$PATH"
を追加したら消えた。
compinit のエラーは zsh を再インストールしたら消えた。
% brew uninstall zsh
% brew install zsh --enable-etcdir
しかし、それでも
peco-src
は動かない。
/usr/local/Cellar/zsh/5.0.5/lib
に
zle.so
はあるし、
.zshrc
内では
zle
は動いていると思われる。
実行時にエラーが出るんだが、どうしてなんだろうか?
調べても同様の状況の人が出てこない。どうしたものか