A Sublime Text 2/3 package for the friendly interactive shell. It features a robust syntax highlighting scheme that mimics the native highlighting behaviour of fish.
The package currently supports up to fish version: 3.1
Note: ST2 support is capped at fish version 2.7, with a limited set of the following features.
- Snippets for common constructs.
- Extensive syntax highlighting:
- Compatibility highlighter: Code that is incompatible with the targeted version of fish is outlined.
- Path highlighter: Paths to existing files are underlined, just like in the fish shell.
- Indent and prettify: Reformat the active file with
fish_indent
:- Use
ctrl+alt+i
or your build system shortcut (eg,ctrl+b
). - Optional setting to run automatically when file is saved.
- Use
Install Package Control, then go to Command Palette (Ctrl+Shift+P) > Package Control: Install Package > fish.
Clone the repository to your Packages directory and rename it to fish
.
cd /path/to/sublime/packages/directory
git clone https://github.com/Phidica/sublime-fish.git
mv sublime-fish fish
Open a .fish
file and verify the selected syntax is "Friendly Interactive Shell (fish)".
As of release 3.0.0, a fish script (for example, fish-shell/share/functions/ls.fish
) will look something like:
Figure 1: Default Monokai colour scheme
Figure 2: Example custom Monokai colour scheme formatting additional scopes
fish construct | Scope name |
---|---|
Unquoted string | meta.string.unquoted |
Command name | meta.function-call.name |
Parameters | meta.function-call.parameter.option /argument |
File path (in argument) | meta.function-call.parameter.argument.path |
File path (in redirection) | meta.function-call.operator.redirection.path |
Redirection | meta.function-call.operator.redirection. {stdin ,stdout ,stderr }. {explicit ,implicit } and keyword.operator.redirect. {truncate ,append } |
Job expansion | meta.function-call.parameter.argument.job-expansion and punctuation.definition.job |
Process expansion | meta.function-call.parameter.argument.process-expansion and punctuation.definition.process |
Variable expansion | meta.variable-expansion and punctuation.definition.variable |
Command substitution | meta.parens.command-substitution and punctuation.section.parens.begin /end |
Index expansion | meta.brackets.index-expansion and punctuation.section.brackets.begin /end |
Brace expansion | meta.braces.brace-expansion and punctuation.section.braces.begin /separator /end |
Wildcard expansion | meta.wildcard-expansion and keyword.operator.question-mark /single-star /double-star |
Home directory expansion | keyword.operator.tilde |
ST2 support and ST3 support is separated between two branches:
st2
: Plugins only compatible with ST2, syntax usestmLanguage
scheme, and provides highlighting for fish 2.7 only.master
: Plugins only compatible with ST3, syntax usessublime-syntax
scheme, and provides highlighting up to the currently supported version of fish.
The 2.x.x series of releases (on both ST support branches) only support fish 2.7.
The 3.x.x series of releases (on the master
branch alone) includes support for fish 3.0 and beyond.
Requirements:
- PackageDev, only for ST2 development and changing the
tmPreferences
file.
ST2 development: The source file of the syntax is fish.YAML-tmLanguage
. When editing this file, "compile" it with the PackageDev build system to automatically generate the fish.tmLanguage
file which is used by Sublime Text 2.
ST3 development: The source file of the syntax is fish.sublime-syntax
.
Guide for contributing is located here.
This project was forked from original groundwork laid by toru hamaguchi.