README: don't assume UP/DOWN arrows; configure it!

This commit is contained in:
Suraj N. Kurapati 2016-10-19 21:43:39 -07:00
parent 2f8a21062c
commit af69798423

View file

@ -1,9 +1,8 @@
# zsh-history-substring-search # zsh-history-substring-search
This is a clean-room implementation of the [Fish shell][1]'s history search This is a clean-room implementation of the [Fish shell][1]'s history search
feature, where you can type in any part of any previously entered command feature, where you can type in any part of any command from history and then
and press the UP and DOWN arrow keys to cycle through the matching commands. press chosen keys, such as the UP and DOWN arrows, to cycle through matches.
You can also use K and J in VI mode or ^P and ^N in EMACS mode for the same.
[1]: http://fishshell.com [1]: http://fishshell.com
[2]: http://www.zsh.org/mla/users/2009/msg00818.html [2]: http://www.zsh.org/mla/users/2009/msg00818.html
@ -34,7 +33,7 @@ Usage
2. Bind keyboard shortcuts to this script's functions. 2. Bind keyboard shortcuts to this script's functions.
Arrow keys: Users typically bind their UP and DOWN arrow keys to this script, thus:
* Run `cat -v` in your favorite terminal emulator to observe key codes. * Run `cat -v` in your favorite terminal emulator to observe key codes.
* Press the UP arrow key and observe what is printed in your terminal. * Press the UP arrow key and observe what is printed in your terminal.
* Press the DOWN arrow key and observe what is printed in your terminal. * Press the DOWN arrow key and observe what is printed in your terminal.
@ -57,26 +56,30 @@ Usage
3. Type any part of any previous command and then: 3. Type any part of any previous command and then:
* Press the UP arrow key to select the nearest command that (1) contains * Press the `history-substring-search-up` key, which was configured in
your query and (2) is older than the current command in the command step 2 above, to select the nearest command that (1) contains your query
history. and (2) is also older than the current command in your command history.
* Press the DOWN arrow key to select the nearest command that (1) * Press the `history-substring-search-down` key, which was configured in
contains your query and (2) is newer than the current command in the step 2 above, to select the nearest command that (1) contains your query
command history. and (2) is also newer than the current command in your command history.
* Press ^U (the Control and U keys simultaneously) to abort the search. * Press `^U` the Control and U keys simultaneously to abort the search.
4. If a matching command spans more than one line of text, press the LEFT 4. If a matching command spans more than one line of text, press the LEFT
arrow key to move the cursor away from the end of the command, and then: arrow key to move the cursor away from the end of the command, and then:
* Press the UP arrow key to move the cursor to the line above. When the * Press the `history-substring-search-up` key, which was configured in
cursor reaches the first line of the command, pressing the UP arrow step 2 above, to move the cursor to the line above the cursored line.
key again will cause this script to perform another search. When the cursor reaches the first line of the command, pressing the
`history-substring-search-up` key again will cause this script to
perform another search.
* Press the DOWN arrow key to move the cursor to the line below. When * Press the `history-substring-search-down` key, which was configured in
the cursor reaches the last line of the command, pressing the DOWN step 2 above, to move the cursor to the line below the cursored line.
arrow key again will cause this script to perform another search. When the cursor reaches the last line of the command, pressing the
`history-substring-search-down` key, which was configured in step 2
above, again will cause this script to perform another search.
Configuration Configuration
@ -110,7 +113,7 @@ default values only after having loaded this script into your ZSH session.
by default. An alternative way to ensure that search results are unique is by default. An alternative way to ensure that search results are unique is
to use `setopt HIST_IGNORE_ALL_DUPS`. If this configuration variable is off to use `setopt HIST_IGNORE_ALL_DUPS`. If this configuration variable is off
and `setopt HIST_IGNORE_ALL_DUPS` is unset, then `setopt HIST_FIND_NO_DUPS` and `setopt HIST_IGNORE_ALL_DUPS` is unset, then `setopt HIST_FIND_NO_DUPS`
is still respected and it makes this plugin skip duplicate _adjacent_ search is still respected and it makes this script skip duplicate _adjacent_ search
results as you cycle through them, but this does not guarantee that search results as you cycle through them, but this does not guarantee that search
results are unique: if your search results were "Dog", "Dog", "HotDog", results are unique: if your search results were "Dog", "Dog", "HotDog",
"Dog", then cycling them gives "Dog", "HotDog", "Dog". Notice that the "Dog" "Dog", then cycling them gives "Dog", "HotDog", "Dog". Notice that the "Dog"