オートコンプリート – oh-my-zsh履歴補完

autocomplete command-history oh-my-zsh zsh

私は最近、robbyrussell の oh-my-zsh を使って zsh に切り替えました。それまでは bash を使っていましたが、zsh は「賢くなりすぎた」という理由で、一つだけ足りないものがあります

git commit と入力してから を入力すると、zsh は最近の git コマンドをすべて処理します。しかし、私が本当に欲しいのは、git commit で始まるすべてのコマンド (git だけではありません) を処理することです

(oh-my-)zshでこの動作を実現するにはどうすればいいですか?

  50  Patrick Oscity  2012-04-27


ベストアンサー

ZSH documentationに問題の解決策がありました。Oh-my-zshはキーを次のようにマッピングしているようです

bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward

これにより、上で説明した通りの動作が得られます。ZSHドキュメントでは、history-search-backwardの動作を次のように記述しています

バッファ内の最初の単語から始まる行を履歴内で後方に検索します


代わりに欲しかったのは、次のようなマッピングで、~/.zshrcの中に挿入しました

bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward

history-beginning-search-backwardの動作は以下の通りです

現在の行から始まってカーソルまでの行を履歴の中で前方に検索します。これにより、カーソルは元の位置に戻ります

また、\e[Aが上下の矢印に効かない場合は、^[OAを与える別のターミナルで<ctrl-v><KEY (e.g., up arrow)>を押してください。そうすれば、\e[Aの代わりにこれを使うことができます。その処理はこちらに書いてあります。http://zshwiki.org/home/zle/bindkeys

70  Patrick Oscity  2012-04-29


oh-my-zshをインストールした状態でzshでも同じ動作をさせたかったのですが、プラグインhistory-substring-searchを見つけました

私の~/.zshrcにプラグインを追加することで、上記と同じ動作を実現しました

plugins=(git brew npm history-substring-search)

この質問が出た時には、このプラグインは存在していなかったと思います。ただ、同じことを実現するための別の方法です

12  dcusan  2014-11-17


タイトルとURLをコピーしました