summaryrefslogtreecommitdiff
path: root/home/.oh-my-zsh/plugins/history-substring-search/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'home/.oh-my-zsh/plugins/history-substring-search/README.md')
-rw-r--r--home/.oh-my-zsh/plugins/history-substring-search/README.md251
1 files changed, 251 insertions, 0 deletions
diff --git a/home/.oh-my-zsh/plugins/history-substring-search/README.md b/home/.oh-my-zsh/plugins/history-substring-search/README.md
new file mode 100644
index 0000000..71a3895
--- /dev/null
+++ b/home/.oh-my-zsh/plugins/history-substring-search/README.md
@@ -0,0 +1,251 @@
+# zsh-history-substring-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 command from history and then
+press chosen keys, such as the UP and DOWN arrows, to cycle through matches.
+
+[1]: http://fishshell.com
+[2]: http://www.zsh.org/mla/users/2009/msg00818.html
+[3]: http://sourceforge.net/projects/fizsh/
+[4]: https://github.com/robbyrussell/oh-my-zsh/pull/215
+[5]: https://github.com/zsh-users/zsh-history-substring-search
+[6]: https://github.com/zsh-users/zsh-syntax-highlighting
+
+
+Requirements
+------------------------------------------------------------------------------
+
+* [ZSH](http://zsh.sourceforge.net) 4.3 or newer
+
+Install
+------------------------------------------------------------------------------
+
+Using the [Homebrew]( https://brew.sh ) package manager:
+
+ brew install zsh-history-substring-search
+ echo 'source $(brew --prefix)/share/zsh-history-substring-search/zsh-history-substring-search.zsh' >> ~/.zshrc
+
+Using [Fig](https://fig.io):
+
+Fig adds apps, shortcuts, and autocomplete to your existing terminal.
+
+Install `zsh-history-substring-search` in just one click.
+
+<a href="https://fig.io/plugins/other/zsh-history-substring-search" target="_blank"><img src="https://fig.io/badges/install-with-fig.svg" /></a>
+
+Using [Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh):
+
+1. Clone this repository in oh-my-zsh's plugins directory:
+
+ git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
+
+2. Activate the plugin in `~/.zshrc`:
+
+ plugins=( [plugins...] zsh-history-substring-search)
+
+3. Run `exec zsh` to take changes into account:
+
+ exec zsh
+
+Using [zplug](https://github.com/zplug/zplug):
+
+1. Add this repo to `~/.zshrc`:
+
+ zplug "zsh-users/zsh-history-substring-search", as: plugin
+
+Using [antigen](https://github.com/zsh-users/antigen):
+
+1. Add the `antigen bundle` command just before `antigen apply`, like this:
+
+```
+antigen bundle zsh-users/zsh-history-substring-search
+antigen apply
+```
+
+2. Then, **after** `antigen apply`, add the key binding configurations, like this:
+
+```
+# zsh-history-substring-search configuration
+bindkey '^[[A' history-substring-search-up # or '\eOA'
+bindkey '^[[B' history-substring-search-down # or '\eOB'
+HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1
+```
+
+Using [Zinit](https://github.com/zdharma-continuum/zinit):
+
+1. Use the `Oh-my-zsh` Zinit snippet in `~/.zshrc`:
+
+ zinit snippet OMZ::plugins/git/git.plugin.zsh`
+
+2. Load the plugin in `~/.zshrc`:
+
+ zinit load 'zsh-users/zsh-history-substring-search
+ zinit ice wait atload'_history_substring_search_config'
+
+3. Run `exec zsh` to take changes into account:
+
+ exec zsh
+
+Usage
+------------------------------------------------------------------------------
+
+1. Load this script into your interactive ZSH session:
+
+ source zsh-history-substring-search.zsh
+
+ If you want to use [zsh-syntax-highlighting][6] along with this script,
+ then make sure that you load it *before* you load this script:
+
+ source zsh-syntax-highlighting.zsh
+ source zsh-history-substring-search.zsh
+
+2. Bind keyboard shortcuts to this script's functions.
+
+ 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.
+      (**NOTE:** In some cases, `cat -v` shows the wrong key codes. If the
+ key codes shown by `cat -v` don't work for you, press `<C-v><UP>` and
+ `<C-v><DOWN>` at your ZSH command line prompt for correct key codes.)
+ * 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 Control and C keys simultaneously to terminate the `cat -v`.
+ * Use your observations from the previous steps to create key bindings.
+ For example, if you observed `^[[A` for UP and `^[[B` for DOWN, then:
+
+ bindkey '^[[A' history-substring-search-up
+ bindkey '^[[B' history-substring-search-down
+
+ However, if the observed values don't work, you can try using terminfo:
+
+ bindkey "$terminfo[kcuu1]" history-substring-search-up
+ bindkey "$terminfo[kcud1]" history-substring-search-down
+
+ Users have also observed that `[OA` and `[OB` are correct values,
+ _even if_ these were not the observed values. If you are having trouble
+ with the observed values, give these a try.
+
+ You might also want to bind the Control-P/N keys for use in EMACS mode:
+
+ bindkey -M emacs '^P' history-substring-search-up
+ bindkey -M emacs '^N' history-substring-search-down
+
+ You might also want to bind the `k` and `j` keys for use in VI mode:
+
+ bindkey -M vicmd 'k' history-substring-search-up
+ bindkey -M vicmd 'j' history-substring-search-down
+
+3. Type any part of any previous command and then:
+
+ * Press the `history-substring-search-up` key, which was configured in
+ step 2 above, to select the nearest command that (1) contains your query
+ and (2) is also older than the current command in your command history.
+
+ * Press the `history-substring-search-down` key, which was configured in
+ step 2 above, to select the nearest command that (1) contains your query
+ 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.
+
+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:
+
+ * Press the `history-substring-search-up` key, which was configured in
+ step 2 above, to move the cursor to the line above the cursored line.
+ 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 `history-substring-search-down` key, which was configured in
+ step 2 above, to move the cursor to the line below the cursored line.
+ 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
+------------------------------------------------------------------------------
+
+This script defines the following global variables. You may override their
+default values.
+
+* `HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND` is a global variable that defines
+ how the query should be highlighted inside a matching command. Its default
+ value causes this script to highlight using bold, white text on a magenta
+ background. See the "Character Highlighting" section in the zshzle(1) man
+ page to learn about the kinds of values you may assign to this variable.
+
+* `HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND` is a global variable that
+ defines how the query should be highlighted when no commands in the
+ history match it. Its default value causes this script to highlight using
+ bold, white text on a red background. See the "Character Highlighting"
+ section in the zshzle(1) man page to learn about the kinds of values you
+ may assign to this variable.
+
+* `HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS` is a global variable that defines
+ how the command history will be searched for your query. Its default value
+ causes this script to perform a case-insensitive search. See the "Globbing
+ Flags" section in the zshexpn(1) man page to learn about the kinds of
+ values you may assign to this variable.
+
+* `HISTORY_SUBSTRING_SEARCH_FUZZY` is a global variable that defines
+ how the command history will be searched for your query. If set to a non-empty
+ value, causes this script to perform a fuzzy search by words, matching in
+ given order e.g. `ab c` will match `*ab*c*`
+
+* `HISTORY_SUBSTRING_SEARCH_PREFIXED` is a global variable that defines how
+ the command history will be searched for your query. If set to a non-empty
+ value, your query will be matched against the start of each history entry.
+ For example, if this variable is empty, `ls` will match `ls -l` and `echo
+ ls`; if it is non-empty, `ls` will only match `ls -l`.
+
+* `HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE` is a global variable that defines
+ whether all search results returned are _unique_. If set to a non-empty
+ value, then only unique search results are presented. This behaviour is off
+ 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
+ and `setopt HIST_IGNORE_ALL_DUPS` is unset, then `setopt HIST_FIND_NO_DUPS`
+ 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 are unique: if your search results were "Dog", "Dog", "HotDog",
+ "Dog", then cycling them gives "Dog", "HotDog", "Dog". Notice that the "Dog"
+ search result appeared twice as you cycled through them. If you wish to
+ receive globally unique search results only once, then use this
+ configuration variable, or use `setopt HIST_IGNORE_ALL_DUPS`.
+
+* `HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_TIMEOUT` is a global variable that
+ defines a timeout in seconds for clearing the search highlight.
+
+
+History
+------------------------------------------------------------------------------
+
+* September 2009: [Peter Stephenson][2] originally wrote this script and it
+ published to the zsh-users mailing list.
+
+* January 2011: Guido van Steen (@guidovansteen) revised this script and
+ released it under the 3-clause BSD license as part of [fizsh][3], the
+ Friendly Interactive ZSHell.
+
+* January 2011: Suraj N. Kurapati (@sunaku) extracted this script from
+ [fizsh][3] 1.0.1, refactored it heavily, and finally repackaged it as an
+ [oh-my-zsh plugin][4] and as an independently loadable [ZSH script][5].
+
+* July 2011: Guido van Steen, Suraj N. Kurapati, and Sorin Ionescu
+ (@sorin-ionescu) [further developed it][4] with Vincent Guerci (@vguerci).
+
+* March 2016: Geza Lore (@gezalore) greatly refactored it in pull request #55.
+
+---
+
+## Oh My Zsh Distribution Notes
+
+What you are looking at now is Oh My Zsh's repackaging of zsh-history-substring-search as an OMZ module inside
+the Oh My Zsh distribution.
+
+The upstream repo, zsh-users/zsh-history-substring-search, can be found on GitHub at
+https://github.com/zsh-users/zsh-history-substring-search.
+
+Everything above this section is a copy of the original upstream's README, so things may differ slightly when
+you're using this inside OMZ. In particular, you do not need to set up key bindings for the up and down arrows
+yourself in `~/.zshrc`; the OMZ plugin does that for you. You may still want to set up additional emacs- or
+vi-specific bindings as mentioned above.