oh-my-zsh 履歴補完

oh-my-zsh 履歴補完

私は最近zshに切り替えました。robbyrussellのoh-my-zshそれまでは、多くのカスタム機能を備えた bash を使用していましたが、zsh が「賢くなりすぎ」ているために、1 つだけ欠けているものがあります。

と入力するgit commitと、zsh は最近使用したすべてのコマンドを実行します。ただし、私が本当に実行したいのは、 で始まるすべてのコマンド(だけではなく)gitを実行することです。git commitgit

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

答え1

私は自分の問題の解決策を見つけました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上矢印または下矢印で が機能しない場合は、 が<ctrl-v><KEY (e.g., up arrow)>表示される別のターミナルで を押します^[OA。その後、 の代わりにこれを使用できます\e[A。プロセスはここで説明されています。http://zshwiki.org/home/zle/bindkeys

答え2

oh-my-zshインストールされ、見つかったプラグインを使用して、zsh で同じ動作を実現したいと考えましたhistory-substring-search

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

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

この質問が提起された当時、このプラグインは存在していなかったと思います。同じことを実現するための別の方法にすぎません。

関連情報