web-dev-qa-db-ja.com

oh-my-zsh履歴の完了

私は最近 robbyrussellのoh-my-zsh を使用してzshに切り替えました。その前に、多くのカスタムスタッフでbashを使用しましたが、zshが「スマートすぎる」ようにしようとしているため、1つだけ不足しています:

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

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

46
Patrick Oscity

ZSHのドキュメント で問題の解決策を見つけました。 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

68
Patrick Oscity

_oh-my-zsh_をインストールしてプラグイン_history-substring-search_を見つけ、zshで同じ動作をしたいと思いました。

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

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

この質問が出されたとき、このプラグインは存在しなかったと思います。同じことを達成するための単なる代替方法。

12
dcusan