Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
Strange, I use OMZSH and it does behave like this. Do you have 'plugins=(git)' in your zshrc? – Chris2048 Apr 28 '12 at 12:29
yes i do, but it is not only for git, all commands are completed this way. – Patrick Oscity Apr 28 '12 at 18:21
up vote 51 down vote accepted

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:

share|improve this answer
Thank you thank you thank you!! I was going nuts over this – mhenrixon Mar 19 '14 at 11:46

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.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .