Binds Ctrl-R
to a widget that searches for multiple keywords in AND
fashion.
In other words, you can enter multiple words, and history entries that match
all of them will be found. The entries are syntax highlighted.
H-S-MW has feature called context viewing – see all occurrences of a command together with surrounding commands:
Set:
zstyle :plugin:history-search-multi-word reset-prompt-protect 1
to be able to use zle reset-prompt
in your e.g. sched
calls, in presence of
z-shell/fast-syntax-highlighting
, zsh-users/zsh-syntax-highlighting
,
zsh-users/zsh-autosuggestions
and other plugins that hook up into Zshell by
overloading Zle widgets. You could e.g. use sched
in following way:
PROMPT=%B%F{yellow}%D{%H:%M:%S}%B%b%f
schedprompt() {
zle && zle reset-prompt
sched +1 schedprompt
}
zmodload -i zsh/sched
schedprompt
to refresh the clock in prompt every second. The reset-prompt-protect
zstyle
needs to be set to 1 for correct cooperation with HSMW. Or, you could use zle .reset-prompt
(i.e. with the dot in front) to call the original, not
overloaded (by F-Sy-H, zsh-autosuggestsions, etc.) reset-prompt
widget.
The plugin is "standalone", which means that only sourcing it is needed. So to
install, unpack H-S-MW
somewhere and add
source {where-hsmw-is}/H-S-MW.plugin.zsh
to zshrc
.
If using a plugin manager, then Zplugin
is recommended, but you can use any
other too, and also install with Oh My Zsh
(by copying directory to
~/.oh-my-zsh/custom/plugins
).
Add zi load z-shell/H-S-MW
to your .zshrc
file.
ZI will handle cloning the plugin for you automatically the next time you
start zsh.
Add zinit load z-shell/H-S-MW
to your .zshrc
file.
Zinit will handle cloning the plugin for you automatically the next time you
start zsh.
Add antigen bundle z-shell/H-S-MW
to your .zshrc
file.
Antigen will handle cloning the plugin for you automatically the next time you
start zsh. You can also add the plugin to a running zsh with antigen bundle z-shell/H-S-MW
for testing before adding it to your
.zshrc
.
cd ~/.oh-my-zsh/custom/plugins
git clone git@github.com:z-shell/H-S-MW.git
- Add
H-S-MW
to your plugin list
Add zgen load z-shell/H-S-MW
to your .zshrc file in the same
place you're doing your other zgen load
calls in.
- Start a new terminal session
zstyle ":history-search-multi-word" page-size "8" # Number of entries to show (default is $LINES/3)
zstyle ":history-search-multi-word" highlight-color "fg=yellow,bold" # Color in which to highlight matched, searched text (default bg=17 on 256-color terminals)
zstyle ":plugin:history-search-multi-word" synhl "yes" # Whether to perform syntax highlighting (default true)
zstyle ":plugin:history-search-multi-word" active "underline" # Effect on active history entry. Try: standout, bold, bg=blue (default underline)
zstyle ":plugin:history-search-multi-word" check-paths "yes" # Whether to check paths for existence and mark with magenta (default true)
zstyle ":plugin:history-search-multi-word" clear-on-cancel "no" # Whether pressing Ctrl-C or ESC should clear entered query
Syntax highlighting is customized via HSMW_HIGHLIGHT_STYLES
associative array.
It has keys like reserved-word
, alias
, command
, path
, etc. which are assigned
with strings like fg=blue,bold
, to configure how given elements are to be
colored. If you assign this array before or after loading hsmw
you will change the defaults. Complete list
of available keys is at the beginning
of hsmw-highlight
file. Example ~/.zshrc
addition that sets path
key –
paths that exist will be highlighted with background magenta, foreground white, bold:
typeset -gA HSMW_HIGHLIGHT_STYLES
HSMW_HIGHLIGHT_STYLES[path]="bg=magenta,fg=white,bold"
Following code will enable coloring of options of form "-o" and "--option", with cyan:
typeset -gA HSMW_HIGHLIGHT_STYLES
HSMW_HIGHLIGHT_STYLES[single-hyphen-option]="fg=cyan"
HSMW_HIGHLIGHT_STYLES[double-hyphen-option]="fg=cyan"
Following code will use 256 colors to highlight command separators (like ";" or "&&"):
HSMW_HIGHLIGHT_STYLES[commandseparator]="fg=241,bg=17"