私は最近zshに切り替えました。robbyrussellのoh-my-zsh
それまでは、多くのカスタム機能を備えた bash を使用していましたが、zsh が「賢くなりすぎ」ているために、1 つだけ欠けているものがあります。
と入力するgit commit
と、↑zsh は最近使用したすべてのコマンドを実行します。ただし、私が本当に実行したいのは、 で始まるすべてのコマンド(だけではなく)git
を実行することです。git commit
git
(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)
この質問が提起された当時、このプラグインは存在していなかったと思います。同じことを実現するための別の方法にすぎません。