.. | ||
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_PCRE
is set:typeset -A ZSH_HIGHLIGHT_REGEXP ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold)
-
When the
RE_MATCH_PCRE
is 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_PCRE
is 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