|
|
||
|---|---|---|
| .. | ||
| test-data | ||
| README.md | ||
| regexp-highlighter.zsh | ||
zsh-syntax-highlighting / highlighters / regexp
This is the regexp highlighter, that highlights user-defined regular
expressions. It's similar to the pattern highlighter, but allows more complex
patterns.
How to tweak it
To use this highlighter, associate regular expressions with styles in the
ZSH_HIGHLIGHT_REGEXP associative array, for example in ~/.zshrc:
typeset -A ZSH_HIGHLIGHT_REGEXP
ZSH_HIGHLIGHT_REGEXP+=('^rm .*' fg=red,bold)
This will highlight lines that start with a call to the rm command.
The regular expressions flavour used is PCRE when the
RE_MATCH_PCRE option is set and POSIX Extended Regular Expressions (ERE),
as implemented by the platform's C library, otherwise. For details on the
latter, see the zsh/regex module's documentation and the
regcomp(3) and re_format(7) manual pages on your system.
For instance, to highlight sudo only as a complete word, i.e., sudo cmd,
but not sudoedit, one might use:
-
When the
RE_MATCH_PCREis set:typeset -A ZSH_HIGHLIGHT_REGEXP ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold) -
When the
RE_MATCH_PCREis unset, on platforms with GNUlibc(e.g., many GNU/Linux distributions):typeset -A ZSH_HIGHLIGHT_REGEXP ZSH_HIGHLIGHT_REGEXP+=('\<sudo\>' fg=123,bold) -
When the
RE_MATCH_PCREis unset, on BSD-based platforms (e.g., macOS):typeset -A ZSH_HIGHLIGHT_REGEXP ZSH_HIGHLIGHT_REGEXP+=('[[:<:]]sudo[[:>:]]' fg=123,bold)
Note, however, that PCRE and POSIX ERE have a large common subset:
for instance, the regular expressions [abc], a*, and (a|b) have the same
meaning in both flavours.
The syntax for values is the same as the syntax of "types of highlighting" of
the zsh builtin $zle_highlight array, which is documented in the zshzle(1)
manual page.
See also: regular expressions tutorial, zsh regexp operator =~
in the zshmisc(1) manual page