| images | ||
| test | ||
| themes | ||
| .gitignore | ||
| _fast-theme | ||
| fast-highlight | ||
| fast-read-ini-file | ||
| fast-syntax-highlighting.plugin.zsh | ||
| fast-theme | ||
| LICENSE | ||
| README.md | ||
Zshell Fast Syntax Highlighting
60 commits that optimized standard zsh-syntax-highlighting to the point that it can edit 10 kB
functions with zed/vared (optimizations done in
history-search-multi-word). Also added:
-
Variable highlighting
-
Colorizing of
${(a)parameter[...]}inside strings (normally only$parameteris colorized) -
Fixed colorizing of function definition, like
abc() { ... }–abcwill not be red -
Fixed colorizing of complex conditions inside
[[, like[[ "$a" || "$b" ]] -
Closing
]]and]are highlighted (see above) -
Paths from
$CDPATHaren't colorized unless the command iscd -
Five 256-color themes, switched with
fast-theme {theme-name}(also try-toption to obtain the below snippet): -
Correct highlighting of descriptor-variables passed to
exec: -
Recursive
evaland$( )highlighting, with secondary theme (two themes active at the same time!):
Performance differencies can be observed at Asciinema recording, where 10 kB function is being edited:
Updates (2018)
2018-06-01
Highlighting of command substitution (i.e. $(...)) with alternate theme – two themes at once! It was just white before:
To select which theme to use for $(...) set the key secondary= in theme ini file.
All shipped themes have this key set (only the default theme doesn't use second theme).
Also added correct highlighting of descriptor-variables passed to exec:
2018-05-30
For-loop is highlighted, it has separate settings in theme file.
2018-05-27
Added support for 256-color themes. There are six themes shipped with FSH. The command to
switch theme is fast-theme {theme-name}, it has a completion which lists available themes
and options. Checkout asciinema recording that presents
the themes.
2018-05-25
Hash holding paths that shouldn't be grepped (globbed) – blacklist for slow disks, mounts, etc.:
typeset -gA FAST_BLIST_PATTERNS
FAST_BLIST_PATTERNS[/mount/nfs1/*]=1
FAST_BLIST_PATTERNS[/mount/disk2/*]=1
2018-05-23
Assign colorizing now spans to variables defined by typeset, export, local, etc.:
Also, zcalc has a separate math mode and specialized highlighting – no more light-red colors because of
treating zcalc like a regular command-line:
2018-05-22
Array assignments were still boring, so I throwed in bracked colorizing:
Assignments are no more one-colour default-white. When used in assignment, highlighted are:
- variables (outside strings),
- strings (double-quoted and single-quoted),
- math-mode (
val=$(( ... ))).
2018-01-06
Math mode is highlighted – expressions (( ... )) and $(( ... )). Empty variables are colorized as red.
There are 3 style names (fields of
FAST_HIGHLIGHT_STYLES
hash) for math-variable, number and empty variable (error): mathvar, mathnum, matherr. You can set
them (like the animation below shows) to change colors.
Installation
The plugin is "standalone", which means that only sourcing it is needed. So to
install, unpack fast-syntax-highlighting somewhere and add
source {where-fsh-is}/fast-syntax-highlighting.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).
Zplugin
Add zplugin light zdharma/fast-syntax-highlighting to your .zshrc file. Zplugin will handle
cloning the plugin for you automatically the next time you start zsh. To update
issue zplugin update zdharma/fast-syntax-highlighting (update --all can also be used).
Zplugin can load f-sy-h in turbo-mode, i.e. after prompt, to speed-up .zshrc processing:
zplugin ice wait"1" # 1 second after prompt
zplugin light zdharma/fast-syntax-highlighting
Antigen
Add antigen bundle zdharma/fast-syntax-highlighting to your .zshrc file. Antigen will handle
cloning the plugin for you automatically the next time you start zsh.
Oh-My-Zsh
cd ~/.oh-my-zsh/custom/pluginsgit clone https://github.com/zdharma/fast-syntax-highlighting.git- Add
fast-syntax-highlightingto your plugin list
Zgen
Add zgen load zdharma/fast-syntax-highlighting to your .zshrc file in the same place you're doing
your other zgen load calls in.
















