I have recently switched to zsh, using robbyrussell's oh-my-zsh. Before that i used bash with a lot of custom stuff and i am only missing one thing because zsh is trying to be 'too smart':

If i type git commit and then zsh goes through all recent git commands. What i really want though, is going through all commands that start with git commit (not just git).

How can i achieve this behavior in (oh-my-)zsh?

  • Strange, I use OMZSH and it does behave like this. Do you have 'plugins=(git)' in your zshrc?
    – Chris2048
    Apr 28, 2012 at 12:29
  • yes i do, but it is not only for git, all commands are completed this way. Apr 28, 2012 at 18:21
  • On Ubuntu see superuser.com/a/1490192/131522
    – mixel
    Oct 8, 2019 at 9:25

2 Answers 2


I have found the solution to my problem in the ZSH documentation. Oh-my-zsh seems to map the and Keys to something like

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

Which yields the exact behavior I described above. The ZSH Documentation describes the behavior of history-search-backward as

Search backward in the history for a line beginning with the first word in the buffer.

What I wanted instead was the following mapping, which I inserted into my ~/.zshrc:

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

The behavior of history-beginning-search-backward is as follows:

Search forward in the history for a line beginning with the current line up to the cursor. This leaves the cursor in its original position.

Also, if \e[A doesn't work for the up or down arrows, press <ctrl-v><KEY (e.g., up arrow)> in another terminal which gives ^[OA. Then you can use this instead of \e[A. The process is described here: http://zshwiki.org/home/zle/bindkeys

  • 1
    Thank you thank you thank you!! I was going nuts over this
    – mhenrixon
    Mar 19, 2014 at 11:46
  • For non-OMZ user like me: bindkey doesn't do anything real, due to a bug, so OMZ team patched it with this plugin. Simply download it and source it before bindkey. Nov 25, 2016 at 15:22
  • @FranklinYu you do realize that's total bs, right? that plugin doesn't do anything with bindkey except USE it to catch some events.
    – nonchip
    Jul 25, 2018 at 18:38
  • Wow, this is perfect!
    – Squirrel
    Sep 7, 2018 at 8:48
  • Just an FYI that the link provided is a 404. Try zshwiki.org/home/keybindings instead. Cheers.
    – sming
    Apr 2 at 16:08

I wanted the same behaviour for zsh with oh-my-zsh installed and found plugin history-substring-search.

I achieved the same behaviour described above by adding the plugin to my ~/.zshrc:

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

I guess this plugin did not exist back when this question was raised. Just an alternate way to achieve the same thing.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.