2020-12-24 04:13:22 +00:00
|
|
|
zsh-syntax-highlighting [![Build Status][build-status-image]][build-status]
|
2011-06-12 20:57:14 +00:00
|
|
|
=======================
|
2010-12-25 17:47:12 +00:00
|
|
|
|
2017-11-29 16:53:23 +00:00
|
|
|
**[Fish shell][fish]-like syntax highlighting for [Zsh][zsh].**
|
2011-01-05 22:07:22 +00:00
|
|
|
|
2017-08-01 15:55:04 +00:00
|
|
|
*Requirements: zsh 4.3.11+.*
|
2010-12-25 17:47:12 +00:00
|
|
|
|
2021-04-10 20:48:51 +00:00
|
|
|
[fish]: https://fishshell.com/
|
2021-04-14 10:39:01 +00:00
|
|
|
[zsh]: https://www.zsh.org/
|
2015-11-17 03:47:11 +00:00
|
|
|
|
2018-05-26 13:39:25 +00:00
|
|
|
This package provides syntax highlighting for the shell zsh. It enables
|
|
|
|
highlighting of commands whilst they are typed at a zsh prompt into an
|
2015-10-20 14:56:10 +00:00
|
|
|
interactive terminal. This helps in reviewing commands before running
|
|
|
|
them, particularly in catching syntax errors.
|
|
|
|
|
2016-10-20 00:39:32 +00:00
|
|
|
Some examples:
|
|
|
|
|
2016-10-20 01:01:45 +00:00
|
|
|
Before: [![Screenshot #1.1](images/before1-smaller.png)](images/before1.png)
|
2016-10-20 00:03:09 +00:00
|
|
|
<br/>
|
2016-10-20 01:01:45 +00:00
|
|
|
After: [![Screenshot #1.2](images/after1-smaller.png)](images/after1.png)
|
2016-10-20 00:39:32 +00:00
|
|
|
|
2016-10-20 01:01:45 +00:00
|
|
|
Before: [![Screenshot #2.1](images/before2-smaller.png)](images/before2.png)
|
2016-10-20 00:39:32 +00:00
|
|
|
<br/>
|
2016-10-20 01:01:45 +00:00
|
|
|
After: [![Screenshot #2.2](images/after2-smaller.png)](images/after2.png)
|
2016-10-20 00:03:09 +00:00
|
|
|
|
2016-10-20 01:01:45 +00:00
|
|
|
Before: [![Screenshot #3.1](images/before3-smaller.png)](images/before3.png)
|
2016-10-20 01:01:20 +00:00
|
|
|
<br/>
|
2016-10-20 01:01:45 +00:00
|
|
|
After: [![Screenshot #3.2](images/after3-smaller.png)](images/after3.png)
|
2015-10-24 09:43:25 +00:00
|
|
|
|
2020-01-14 20:46:46 +00:00
|
|
|
Before: [![Screenshot #4.1](images/before4-smaller.png)](images/before4-smaller.png)
|
|
|
|
<br/>
|
|
|
|
After: [![Screenshot #4.2](images/after4-smaller.png)](images/after4-smaller.png)
|
|
|
|
|
|
|
|
|
2010-12-30 15:35:55 +00:00
|
|
|
|
2011-06-12 20:57:14 +00:00
|
|
|
How to install
|
|
|
|
--------------
|
2010-12-25 21:10:50 +00:00
|
|
|
|
2015-11-24 07:05:41 +00:00
|
|
|
See [INSTALL.md](INSTALL.md).
|
2015-10-23 04:45:18 +00:00
|
|
|
|
|
|
|
|
2015-01-26 09:08:31 +00:00
|
|
|
FAQ
|
|
|
|
---
|
|
|
|
|
|
|
|
### Why must `zsh-syntax-highlighting.zsh` be sourced at the end of the `.zshrc` file?
|
|
|
|
|
2016-10-07 14:21:57 +00:00
|
|
|
zsh-syntax-highlighting works by hooking into the Zsh Line Editor (ZLE) and
|
|
|
|
computing syntax highlighting for the command-line buffer as it stands at the
|
|
|
|
time z-sy-h's hook is invoked.
|
|
|
|
|
|
|
|
In zsh 5.2 and older,
|
2016-10-07 14:22:23 +00:00
|
|
|
`zsh-syntax-highlighting.zsh` hooks into ZLE by wrapping ZLE widgets. It must
|
|
|
|
be sourced after all custom widgets have been created (i.e., after all `zle -N`
|
|
|
|
calls and after running `compinit`) in order to be able to wrap all of them.
|
2016-10-07 14:21:57 +00:00
|
|
|
Widgets created after z-sy-h is sourced will work, but will not update the
|
2015-09-24 18:45:35 +00:00
|
|
|
syntax highlighting.
|
2015-01-26 09:08:31 +00:00
|
|
|
|
2020-08-09 10:54:01 +00:00
|
|
|
In zsh newer than 5.8 (not including 5.8 itself),
|
2016-10-07 14:21:57 +00:00
|
|
|
zsh-syntax-highlighting uses the `add-zle-hook-widget` facility to install
|
|
|
|
a `zle-line-pre-redraw` hook. Hooks are run in order of registration,
|
|
|
|
therefore, z-sy-h must be sourced (and register its hook) after anything else
|
|
|
|
that adds hooks that modify the command-line buffer.
|
|
|
|
|
2016-08-16 17:08:47 +00:00
|
|
|
### Does syntax highlighting work during incremental history search?
|
2016-03-29 20:13:46 +00:00
|
|
|
|
2017-07-30 17:06:14 +00:00
|
|
|
Highlighting the command line during an incremental history search (by default bound to
|
|
|
|
to <kbd>Ctrl+R</kbd> in zsh's emacs keymap) requires zsh 5.4 or newer.
|
2017-02-07 17:19:18 +00:00
|
|
|
|
2017-07-30 17:06:14 +00:00
|
|
|
Under zsh versions older than 5.4, the zsh-default [underlining][zshzle-Character-Highlighting]
|
2016-08-16 17:09:42 +00:00
|
|
|
of the matched portion of the buffer remains available, but zsh-syntax-highlighting's
|
|
|
|
additional highlighting is unavailable. (Those versions of zsh do not provide
|
|
|
|
enough information to allow computing the highlighting correctly.)
|
2016-03-29 20:13:46 +00:00
|
|
|
|
2017-07-30 17:06:14 +00:00
|
|
|
See issues [#288][i288] and [#415][i415] for details.
|
2016-03-29 20:13:46 +00:00
|
|
|
|
2022-02-22 10:42:05 +00:00
|
|
|
[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting
|
2016-03-29 20:13:46 +00:00
|
|
|
[i288]: https://github.com/zsh-users/zsh-syntax-highlighting/pull/288
|
2017-07-30 17:06:14 +00:00
|
|
|
[i415]: https://github.com/zsh-users/zsh-syntax-highlighting/pull/415
|
2016-03-29 20:13:46 +00:00
|
|
|
|
2015-09-24 22:58:22 +00:00
|
|
|
### How are new releases announced?
|
|
|
|
|
2015-11-17 03:02:39 +00:00
|
|
|
There is currently no "push" announcements channel. However, the following
|
|
|
|
alternatives exist:
|
2015-09-24 22:58:22 +00:00
|
|
|
|
|
|
|
- GitHub's RSS feed of releases: https://github.com/zsh-users/zsh-syntax-highlighting/releases.atom
|
|
|
|
- An anitya entry: https://release-monitoring.org/project/7552/
|
|
|
|
|
2015-11-17 03:02:39 +00:00
|
|
|
|
2011-06-12 20:57:14 +00:00
|
|
|
How to tweak
|
|
|
|
------------
|
2011-01-05 22:07:22 +00:00
|
|
|
|
2015-11-17 03:02:39 +00:00
|
|
|
Syntax highlighting is done by pluggable highlighter scripts. See the
|
2015-11-26 17:33:21 +00:00
|
|
|
[documentation on highlighters](docs/highlighters.md) for details and
|
|
|
|
configuration settings.
|
2017-07-31 23:10:53 +00:00
|
|
|
|
2020-12-24 04:13:22 +00:00
|
|
|
[build-status]: https://github.com/zsh-users/zsh-syntax-highlighting/actions
|
|
|
|
[build-status-image]: https://github.com/zsh-users/zsh-syntax-highlighting/workflows/Tests/badge.svg
|