Monday 20 November 2017

autocomplete - oh-my-zsh history completion


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?



Answer



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 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


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...