oh-my-zsh history completion
Solution 1
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
Solution 2
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.
Related videos on Youtube
Patrick Oscity
Updated on September 18, 2022Comments
-
Patrick Oscity over 1 year
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 recentgit
commands. What i really want though, is going through all commands that start withgit commit
(not justgit
).How can i achieve this behavior in (oh-my-)zsh?
-
mhenrixon about 10 yearsThank you thank you thank you!! I was going nuts over this
-
Franklin Yu over 7 yearsFor 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 beforebindkey
. -
nonchip almost 6 years@FranklinYu you do realize that's total bs, right? that plugin doesn't do anything with bindkey except USE it to catch some events.
-
Squirrel over 5 yearsWow, this is perfect!
-
sming about 2 yearsJust an FYI that the link provided is a 404. Try zshwiki.org/home/keybindings instead. Cheers.