[](https://www.paypal.me/ZdharmaInitiative) [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D54B3S7C6HGME) [](https://www.patreon.com/psprint) <br/>New: You can request a feature when donating, even fancy or advanced ones get implemented this way. [There are reports](DONATIONS.md) about what is being done with the money received. # Fast Syntax Highlighting (F-Sy-H) Feature rich syntax highlighting for Zsh. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/highlight-much.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Table of Contents - [News](#news) - [Installation](#installation) - [Features](#features) - [Performance](#performance) - [IRC Channel](#irc-channel) ### Other Contents - [License](https://github.com/zdharma/fast-syntax-highlighting/blob/master/LICENSE) - [Changelog](https://github.com/zdharma/fast-syntax-highlighting/blob/master/CHANGELOG.md) - [Theme Guide](https://github.com/zdharma/fast-syntax-highlighting/blob/master/THEME_GUIDE.md) - [Chroma Guide](https://github.com/zdharma/fast-syntax-highlighting/blob/master/CHROMA_GUIDE.adoc) # News * 15-06-2019 - A new architecture for defining the highlighting for **specific commands**: it now uses **abstract definitions** instead of **top-down, regular code**. The first effect is the highlighting for the `git` command it is now **maximally faithful**, it follows the `git` command almost completely. [Screencast](https://asciinema.org/a/253411) # Installation ### Manual Clone the Repository. ```zsh git clone https://github.com/zdharma/fast-syntax-highlighting ~/path/to/fsh ``` And add the following to your `zshrc` file. ```zsh source ~/path/to/fsh/fast-syntax-highlighting.plugin.zsh ``` ### Zinit Add the following to your `zshrc` file. ```zsh zinit light zdharma/fast-syntax-highlighting ``` Here's an example of how to load the plugin together with a few other popular ones with the use of [Turbo](https://zdharma.org/zinit/wiki/INTRODUCTION/#turbo_mode_zsh_62_53), i.e.: speeding up the Zsh startup by loading the plugin right after the first prompt, in background: ```zsh zinit wait lucid for \ atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \ zdharma/fast-syntax-highlighting \ blockf \ zsh-users/zsh-completions \ atload"!_zsh_autosuggest_start" \ zsh-users/zsh-autosuggestions ``` ### Antigen Add the following to your `zshrc` file. ```zsh antigen bundle zdharma/fast-syntax-highlighting ``` ### Zgen Add the following to your `.zshrc` file in the same place you're doing your other `zgen load` calls in. ```zsh zgen load zdharma/fast-syntax-highlighting ``` ### Oh-My-Zsh Clone the Repository. ```zsh git clone https://github.com/zdharma/fast-syntax-highlighting.git \ ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting ``` And add `fast-syntax-highlighting` to your plugin list. # Features ### Themes Switch themes via `fast-theme {theme-name}`. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/theme.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> Run `fast-theme -t {theme-name}` option to obtain the snippet above. Run `fast-theme -l` to list available themes. ### Variables Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/parameter.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/in_string.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Brackets <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/brackets.gif" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Conditions Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/cplx_cond.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Strings Exact highlighting that recognizes quotings. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/ideal-string.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### here-strings <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/herestring.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### `exec` descriptor-variables Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/execfd_cmp.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### for-loops and alternate syntax (brace `{`/`}` blocks) <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/for-loop-cmp.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Function definitions Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper 2 lines): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/function.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Recursive `eval` and `$( )` highlighting Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/eval_cmp.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Chroma functions Highlighting that is specific for a given command. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/git_chroma.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> The [chromas](https://github.com/zdharma/fast-syntax-highlighting/tree/master/chroma) that are enabled by default can be found [here](https://github.com/zdharma/fast-syntax-highlighting/blob/master/fast-highlight#L166). ### Math-mode highlighting <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/math.gif" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> ### Zcalc highlighting <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/zcalc.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> # Performance Performance differences can be observed in this Asciinema recording, where a `10 kB` function is being edited. <div style="width:100%;background-color:#121314;border:3px solid #121314;border-radius:6px;margin:5px 0;padding:2px 5px"> <a href="https://asciinema.org/a/112367"> <img src="https://asciinema.org/a/112367.png" alt="asciicast"> </a> </div> ## IRC Channel Channel `#zinit@freenode` is a support place for all author's projects. Connect to: [chat.freenode.net:6697](ircs://chat.freenode.net:6697/%23zinit) (SSL) or [chat.freenode.net:6667](irc://chat.freenode.net:6667/%23zinit) and join #zinit. Following is a quick access via Webchat [](https://kiwiirc.com/client/chat.freenode.net:+6697/#zinit)