Fast syntax hilighting for the Zsh prompt.
Go to file
Max Coplan 4672ad5dd9
Some checks failed
zunit / zunit (push) Has been cancelled
fix(chroma/ssh): treat -R and -Q as flags that take an argument (#91)
The ssh chroma keeps a list of flags whose argument must be skipped, so the
argument is not mistaken for the hostname. Every entry is hyphenated except
two: `Q` and `R` are written bare, so `-Q` and `-R` never match.

For `-R` the consequence is visible. Typing

    ssh -R 5037:localhost:5037 devbox

leaves `5037:localhost:5037` counted as the first non-option token, so it
becomes the hostname. Its trailing `:5037` then matches the host:port check and
the chroma calls `zle -M` with

    Format of hostname incorrect, use -p to pass port number

while you type, on a command line that is perfectly valid. `-L` is in the list
correctly, so the identical local-forward spec highlights fine and only the
remote forward is affected. `-Q` mislabels its argument as the host in the same
way, without reaching the message.

Adds two tests: `-R` must stay silent, and a hostspec that really does carry a
port must still be reported.

Related to #33, which reports `-LRD` forwarding specs highlighting wrongly;
this fixes the `-R` half.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-31 09:14:04 +02:00
.github/workflows maint: add linting Github action workflow (#29) 2022-04-25 01:18:04 -05:00
images images: 203654.gif 2019-11-03 06:27:45 +01:00
share *highlight,plugin.zsh,other: Default theme to have a secondary 2020-04-16 16:04:13 +02:00
test test: Add forgotten string related code triggering bits to -hol test 2018-08-23 20:56:14 +02:00
tests fix(chroma/ssh): treat -R and -Q as flags that take an argument (#91) 2026-08-31 09:14:04 +02:00
themes feat: new base16 theme (#31) 2022-06-08 02:32:31 -05:00
→chroma fix(chroma/ssh): treat -R and -Q as flags that take an argument (#91) 2026-08-31 09:14:04 +02:00
.fast-make-targets feat(chroma/make): new makefile colorization caching strategy (#82) 2025-07-16 10:37:53 +02:00
.fast-read-ini-file many: Rename autoload functions to follow the standard recommendations 2020-01-26 22:50:35 +01:00
.fast-run-command many: Rename autoload functions to follow the standard recommendations 2020-01-26 22:50:35 +01:00
.fast-run-git-command .fast-run-git-command: Support for --status option 2020-02-16 21:58:42 +01:00
.fast-zts-read-all many: Rename autoload functions to follow the standard recommendations 2020-01-26 22:50:35 +01:00
.gitignore git ignore: add generated theme_overlay.zsh file. 2018-12-23 08:56:46 +01:00
.zunit.yml zunit: First test for extended version of zunit (patch sent to upstream) 2019-07-18 03:07:26 +02:00
_fast-theme _fast-theme: FEATURE – now also the XDG:… themes are being completed 2020-01-26 22:59:02 +01:00
CHANGELOG.md maint: update links (e.g., zdharma -> zdharma-continuum) (#41) 2022-09-30 22:22:15 -05:00
CHROMA_GUIDE.adoc Updated CHROMA_GUIDE.md 2018-10-06 14:54:31 +02:00
fast-highlight feat(chrome): support for podman (#80) 2025-06-25 09:42:43 +02:00
fast-string-highlight *string-highlight: Support \' inside $'…' #190 2020-05-31 03:56:15 +02:00
fast-syntax-highlighting.plugin.zsh feat(chrome): support for podman (#80) 2025-06-25 09:42:43 +02:00
fast-theme many: Rename autoload functions to follow the standard recommendations 2020-01-26 22:50:35 +01:00
LICENSE Initial commit 2017-03-26 09:31:58 +02:00
README.md docs: Fig installation instructions (#37) 2022-07-22 17:30:21 -05:00
THEME_GUIDE.md maint: update links (e.g., zdharma -> zdharma-continuum) (#41) 2022-09-30 22:22:15 -05:00

Fast Syntax Highlighting (F-Sy-H) Gitter

Feature rich syntax highlighting for Zsh.

image could not be loaded

Table of Contents

Other Contents

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

Installation

Manual

Clone the Repository.

git clone https://github.com/zdharma-continuum/fast-syntax-highlighting ~/path/to/fsh

And add the following to your zshrc file.

source ~/path/to/fsh/fast-syntax-highlighting.plugin.zsh

Zinit

Add the following to your zshrc file.

zinit light zdharma-continuum/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, i.e.: speeding up the Zsh startup by loading the plugin right after the first prompt, in background:

zinit wait lucid for \
 atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \
    zdharma-continuum/fast-syntax-highlighting \
 blockf \
    zsh-users/zsh-completions \
 atload"!_zsh_autosuggest_start" \
    zsh-users/zsh-autosuggestions

Antigen

Add the following to your zshrc file.

antigen bundle zdharma-continuum/fast-syntax-highlighting

Fig

Fig adds apps, shortcuts, and autocomplete to your existing terminal.

Install fast-syntax-highlighting in just one click.

Zgen

Add the following to your .zshrc file in the same place you're doing your other zgen load calls in.

zgen load zdharma-continuum/fast-syntax-highlighting

Oh-My-Zsh

Clone the Repository.

git clone https://github.com/zdharma-continuum/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}.

image could not be loaded

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):

image could not be loaded
image could not be loaded

Brackets

image could not be loaded

Conditions

Comparing to the project zsh-users/zsh-syntax-highlighting (the upper line):

image could not be loaded

Strings

Exact highlighting that recognizes quotings.

image could not be loaded

here-strings

image could not be loaded

exec descriptor-variables

Comparing to the project zsh-users/zsh-syntax-highlighting (the upper line):

image could not be loaded

for-loops and alternate syntax (brace {/} blocks)

image could not be loaded

Function definitions

Comparing to the project zsh-users/zsh-syntax-highlighting (the upper 2 lines):

image could not be loaded

Recursive eval and $( ) highlighting

Comparing to the project zsh-users/zsh-syntax-highlighting (the upper line):

image could not be loaded

Chroma functions

Highlighting that is specific for a given command.

image could not be loaded

The chromas that are enabled by default can be found here.

Math-mode highlighting

image could not be loaded

Zcalc highlighting

image could not be loaded

Performance

Performance differences can be observed in this Asciinema recording, where a 10 kB function is being edited.