Skip to content

Instantly share code, notes, and snippets.

Created June 3, 2016 04:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/a0daf90def2669e1f8db281f377a0b58 to your computer and use it in GitHub Desktop.
Save anonymous/a0daf90def2669e1f8db281f377a0b58 to your computer and use it in GitHub Desktop.
'scopeName': 'source.shell'
'name': 'Shell Script'
'fileTypes': [
'sh'
'bash'
'ksh'
'zsh'
'zsh-theme'
'zshenv'
'zlogin'
'zlogout'
'zprofile'
'zshrc'
'bashrc'
'bash_profile'
'bash_login'
'profile'
'bash_logout'
'.textmate_init'
'npmrc'
'PKGBUILD'
'install'
'cygport'
'bats'
'ebuild'
]
'firstLineMatch': '^#!.*\\b(bash|zsh|sh|tcsh|ksh|dash|ash|csh|rc)|(?i:^\\s*#\\s*-\\*-[^*]*mode:\\s*shell-script[^*]*-\\*-)'
'patterns': [
{
'include': '#comment'
}
{
'include': '#pipeline'
}
{
'include': '#list'
}
{
'include': '#compound-command'
}
{
'include': '#loop'
}
{
'include': '#function-definition'
}
{
'include': '#string'
}
{
'include': '#variable'
}
{
'include': '#interpolation'
}
{
'include': '#heredoc'
}
{
'include': '#herestring'
}
{
'include': '#redirection'
}
{
'include': '#pathname'
}
{
'include': '#keyword'
}
{
'include': '#support'
}
]
'repository':
'case-clause':
'patterns': [
{
'begin': '(?=\\S)'
'end': ';;'
'endCaptures':
'0':
'name': 'punctuation.terminator.case-clause.shell'
'name': 'meta.scope.case-clause.shell'
'patterns': [
{
'begin': '(\\(|(?=\\S))'
'captures':
'0':
'name': 'punctuation.definition.case-pattern.shell'
'end': '\\)'
'name': 'meta.scope.case-pattern.shell'
'patterns': [
{
'match': '\\|'
'name': 'punctuation.separator.pipe-sign.shell'
}
{
'include': '#string'
}
{
'include': '#variable'
}
{
'include': '#interpolation'
}
{
'include': '#pathname'
}
]
}
{
'begin': '(?<=\\))'
'end': '(?=;;)'
'name': 'meta.scope.case-clause-body.shell'
'patterns': [
{
'include': '$self'
}
]
}
]
}
]
'comment':
'begin': '(^\\s+)?(?<!\\S)(?=#)(?!#\\{)'
'beginCaptures':
'1':
'name': 'punctuation.whitespace.comment.leading.shell'
'end': '(?!\\G)'
'patterns': [
{
'begin': '#!'
'beginCaptures':
'0':
'name': 'punctuation.definition.comment.shebang.shell'
'end': '\\n'
'name': 'comment.line.number-sign.shebang.shell'
}
{
'begin': '#'
'beginCaptures':
'0':
'name': 'punctuation.definition.comment.shell'
'end': '\\n'
'name': 'comment.line.number-sign.shell'
}
]
'compound-command':
'patterns': [
{
'begin': '(\\[{1,2})'
'captures':
'1':
'name': 'punctuation.definition.logical-expression.shell'
'end': '(\\]{1,2})'
'name': 'meta.scope.logical-expression.shell'
'patterns': [
{
'include': '#logical-expression'
}
{
'include': '$self'
}
]
}
{
'begin': '(\\({2})'
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '(\\){2})'
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.other.math.shell'
'patterns': [
{
'include': '#math'
}
]
}
{
'begin': '(\\()'
'captures':
'1':
'name': 'punctuation.definition.subshell.shell'
'end': '(\\))'
'name': 'meta.scope.subshell.shell'
'patterns': [
{
'include': '$self'
}
]
}
{
'begin': '(?<=\\s|^)(\\{)(?=\\s|$)'
'captures':
'1':
'name': 'punctuation.definition.group.shell'
'end': '(?<=^|;)\\s*(\\})'
'name': 'meta.scope.group.shell'
'patterns': [
{
'include': '$self'
}
]
}
]
'function-definition':
'patterns': [
{
'begin': '\\b(function)\\s+([^\\s\\\\]+)(?:\\s*(\\(\\)))?'
'beginCaptures':
'1':
'name': 'storage.type.function.shell'
'2':
'name': 'entity.name.function.shell'
'3':
'name': 'punctuation.definition.arguments.shell'
'end': ';|&|$'
'endCaptures':
'0':
'name': 'punctuation.definition.function.shell'
'name': 'meta.function.shell'
'patterns': [
{
'include': '$self'
}
]
}
{
'begin': '\\b([^\\s\\\\=]+)\\s*(\\(\\))'
'beginCaptures':
'1':
'name': 'entity.name.function.shell'
'2':
'name': 'punctuation.definition.arguments.shell'
'end': ';|&|$'
'endCaptures':
'0':
'name': 'punctuation.definition.function.shell'
'name': 'meta.function.shell'
'patterns': [
{
'include': '$self'
}
]
}
]
'heredoc':
'patterns': [
{
'begin': '(<<)-("|\'|)(RUBY)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.ruby.embedded.shell'
'end': '^\\t*(RUBY)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.ruby.shell'
'patterns': [
{
'include': 'source.ruby'
}
]
}
{
'begin': '(<<)("|\'|)(RUBY)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.ruby.embedded.shell'
'end': '^(RUBY)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.ruby.shell'
'patterns': [
{
'include': 'source.ruby'
}
]
}
{
'begin': '(<<)-("|\'|)(PYTHON)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.python.embedded.shell'
'end': '^\\t*(PYTHON)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.python.shell'
'patterns': [
{
'include': 'source.python'
}
]
}
{
'begin': '(<<)("|\'|)(PYTHON)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.python.embedded.shell'
'end': '^(PYTHON)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.python.shell'
'patterns': [
{
'include': 'source.python'
}
]
}
{
'begin': '(<<)-("|\'|)(APPLESCRIPT)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.applescript.embedded.shell'
'end': '^\\t*(APPLESCRIPT)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.applescript.shell'
'patterns': [
{
'include': 'source.applescript'
}
]
}
{
'begin': '(<<)("|\'|)(APPLESCRIPT)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.applescript.embedded.shell'
'end': '^(APPLESCRIPT)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.applescript.shell'
'patterns': [
{
'include': 'source.applescript'
}
]
}
{
'begin': '(<<)-("|\'|)(HTML)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'text.html.embedded.shell'
'end': '^\\t*(HTML)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.html.shell'
'patterns': [
{
'include': 'text.html.basic'
}
]
}
{
'begin': '(<<)("|\'|)(HTML)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'text.html.embedded.shell'
'end': '^(HTML)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.html.shell'
'patterns': [
{
'include': 'text.html.basic'
}
]
}
{
'begin': '(<<)-("|\'|)(MARKDOWN)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'text.html.markdown.embedded.shell'
'end': '^\\t*(MARKDOWN)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.markdown.shell'
'patterns': [
{
'include': 'text.html.markdown'
}
]
}
{
'begin': '(<<)("|\'|)(MARKDOWN)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'text.html.markdown.embedded.shell'
'end': '^(MARKDOWN)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.markdown.shell'
'patterns': [
{
'include': 'text.html.markdown'
}
]
}
{
'begin': '(<<)-("|\'|)(TEXTILE)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'text.html.textile.embedded.shell'
'end': '^\\t*(TEXTILE)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.textile.shell'
'patterns': [
{
'include': 'text.html.textile'
}
]
}
{
'begin': '(<<)("|\'|)(TEXTILE)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'text.html.textile.embedded.shell'
'end': '^(TEXTILE)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.textile.shell'
'patterns': [
{
'include': 'text.html.textile'
}
]
}
{
'begin': '(<<)-("|\'|)(SHELL)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.shell.embedded.shell'
'end': '^\\t*(\\3)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.shell.shell'
'patterns': [
{
'include': 'source.shell'
}
]
}
{
'begin': '(<<)("|\'|)(SHELL)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'contentName': 'source.shell.embedded.shell'
'end': '^(\\3)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.shell.shell'
'patterns': [
{
'include': 'source.shell'
}
]
}
{
'begin': '(<<)-("|\'|)\\\\?(\\w+)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'end': '^\\t*(\\3)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.no-indent.shell'
}
{
'begin': '(<<)("|\'|)\\\\?(\\w+)\\2'
'beginCaptures':
'1':
'name': 'keyword.operator.heredoc.shell'
'3':
'name': 'keyword.control.heredoc-token.shell'
'captures':
'0':
'name': 'punctuation.definition.string.shell'
'end': '^(\\3)\\b'
'endCaptures':
'1':
'name': 'keyword.control.heredoc-token.shell'
'name': 'string.unquoted.heredoc.shell'
}
]
'herestring':
'patterns': [
{
'begin': '(<<<)\s*((\'))'
'beginCaptures':
'1':
'name': 'keyword.operator.herestring.shell'
'2':
'name': 'string.quoted.single.shell'
'3':
'name': 'punctuation.definition.string.begin.shell'
'end': '(\')'
'endCaptures':
'0':
'name': 'string.quoted.single.shell'
'1':
'name': 'punctuation.definition.string.end.shell'
'name': 'meta.herestring.shell'
'contentName': 'string.quoted.single.shell'
}
{
'begin': '(<<<)\s*(("))'
'beginCaptures':
'1':
'name': 'keyword.operator.herestring.shell'
'2':
'name': 'string.quoted.double.shell'
'3':
'name': 'punctuation.definition.string.begin.shell'
'end': '(")'
'endCaptures':
'0':
'name': 'string.quoted.double.shell'
'1':
'name': 'punctuation.definition.string.end.shell'
'name': 'meta.herestring.shell'
'contentName': 'string.quoted.double.shell'
}
{
'captures':
'1':
'name': 'keyword.operator.herestring.shell'
'2':
'name': 'string.unquoted.herestring.shell'
'match': '(<<<)(([^\\s\\\\]|\\\\.)+)'
'name': 'meta.herestring.shell'
}
]
'interpolation':
'patterns': [
{
'begin': '\\$\\({2}'
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '\\){2}'
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.other.math.shell'
'patterns': [
{
'include': '#math'
}
]
}
{
'begin': '`'
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '`'
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.interpolated.backtick.shell'
'patterns': [
{
'match': '\\\\[`\\\\$]'
'name': 'constant.character.escape.shell'
}
{
'include': '$self'
}
]
}
{
'begin': '\\$\\('
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '\\)'
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.interpolated.dollar.shell'
'patterns': [
{
'include': '$self'
}
]
}
]
'keyword':
'patterns': [
{
'match': '(?<!-)\\b(then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)\\b(?!-)'
'name': 'keyword.control.shell'
}
{
'match': '(?<![-/])\\b(?:export|declare|typeset|local|readonly)\\b'
'name': 'storage.modifier.shell'
}
]
'list':
'patterns': [
{
'match': ';|&&|&|\\|\\|'
'name': 'keyword.operator.list.shell'
}
]
'logical-expression':
'patterns': [
{
'comment': 'do we want a special rule for ( expr )?'
'match': '=[=~]?|!=?|<|>|&&|\\|\\|'
'name': 'keyword.operator.logical.shell'
}
{
'match': '(?<!\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])'
'name': 'keyword.operator.logical.shell'
}
]
'loop':
'patterns': [
{
'begin': '\\b(for)\\s+(?=\\({2})'
'captures':
'1':
'name': 'keyword.control.shell'
'end': '\\b(done)\\b'
'name': 'meta.scope.for-loop.shell'
'patterns': [
{
'include': '$self'
}
]
}
{
'begin': '\\b(for)\\b\\s+(.+)\\s+\\b(in)\\b'
'beginCaptures':
'1':
'name': 'keyword.control.shell'
'2':
'name': 'variable.other.loop.shell'
'patterns': [
{
'include': '#string'
}
]
'3':
'name': 'keyword.control.shell'
'end': '(?<![-/])\\bdone\\b(?![-/])'
'endCaptures':
'0':
'name': 'keyword.control.shell'
'name': 'meta.scope.for-in-loop.shell'
'patterns': [
{
'include': '$self'
}
]
}
{
'begin': '\\b(while|until)\\b'
'captures':
'1':
'name': 'keyword.control.shell'
'end': '\\b(done)\\b'
'name': 'meta.scope.while-loop.shell'
'patterns': [
{
'include': '$self'
}
]
}
{
'begin': '\\b(select)\\s+((?:[^\\s\\\\]|\\\\.)+)\\b'
'beginCaptures':
'1':
'name': 'keyword.control.shell'
'2':
'name': 'variable.other.loop.shell'
'end': '\\b(done)\\b'
'endCaptures':
'1':
'name': 'keyword.control.shell'
'name': 'meta.scope.select-block.shell'
'patterns': [
{
'include': '$self'
}
]
}
{
'begin': '(?<!-)\\b(case)\\b(?!-)'
'captures':
'1':
'name': 'keyword.control.shell'
'end': '\\b(esac)\\b'
'name': 'meta.scope.case-block.shell'
'patterns': [
{
'begin': '\\b(?:in)\\b'
'beginCaptures':
'1':
'name': 'keyword.control.shell'
'end': '(?=\\b(?:esac)\\b)'
'name': 'meta.scope.case-body.shell'
'patterns': [
{
'include': '#comment'
}
{
'include': '#case-clause'
}
{
'include': '$self'
}
]
}
{
'include': '$self'
}
]
}
{
'begin': '(?<!-)\\b(if)\\b(?!-|\\s*=)'
'captures':
'1':
'name': 'keyword.control.shell'
'end': '\\b(fi)\\b'
'name': 'meta.scope.if-block.shell'
'patterns': [
{
'include': '$self'
}
]
}
]
'math':
'patterns': [
{
'include': '#variable'
}
{
'match': '\\+{1,2}|-{1,2}|!|~|\\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\\|{1,2}|&{1,2}|\\?|\\:|,|=|[*/%+\\-&^|]=|<<=|>>='
'name': 'keyword.operator.arithmetic.shell'
}
{
'match': '0[xX]\\h+'
'name': 'constant.numeric.hex.shell'
}
{
'match': '0\\d+'
'name': 'constant.numeric.octal.shell'
}
{
'match': '\\d{1,2}#[0-9a-zA-Z@_]+'
'name': 'constant.numeric.other.shell'
}
{
'match': '\\d+'
'name': 'constant.numeric.integer.shell'
}
]
'pathname':
'patterns': [
{
'match': '(?<=\\s|:|=|^)~'
'name': 'keyword.operator.tilde.shell'
}
{
'match': '\\*|\\?'
'name': 'keyword.operator.glob.shell'
}
{
'begin': '([?*+@!])(\\()'
'beginCaptures':
'1':
'name': 'keyword.operator.extglob.shell'
'2':
'name': 'punctuation.definition.extglob.shell'
'end': '(\\))'
'endCaptures':
'1':
'name': 'punctuation.definition.extglob.shell'
'name': 'meta.structure.extglob.shell'
'patterns': [
{
'include': '$self'
}
]
}
]
'pipeline':
'patterns': [
{
'match': '\\b(time)\\b'
'name': 'keyword.other.shell'
}
{
'match': '[|!]'
'name': 'keyword.operator.pipe.shell'
}
]
'redirection':
'patterns': [
{
'begin': '[><]\\('
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '\\)'
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.interpolated.process-substitution.shell'
'patterns': [
{
'include': '$self'
}
]
}
{
'comment': 'valid: &>word >&word >word [n]>&[n] [n]<word [n]>word [n]>>word [n]<&word (last one is duplicate)'
'match': '&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>'
'name': 'keyword.operator.redirect.shell'
}
]
'string':
'patterns': [
{
'match': '\\\\.'
'name': 'constant.character.escape.shell'
}
{
'begin': '\''
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '\''
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.quoted.single.shell'
}
{
'begin': '\\$?"'
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '"'
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.quoted.double.shell'
'patterns': [
{
'match': '\\\\[\\$`"\\\\\\n]'
'name': 'constant.character.escape.shell'
}
{
'include': '#variable'
}
{
'include': '#interpolation'
}
]
}
{
'begin': '\\$\''
'beginCaptures':
'0':
'name': 'punctuation.definition.string.begin.shell'
'end': '\''
'endCaptures':
'0':
'name': 'punctuation.definition.string.end.shell'
'name': 'string.quoted.single.dollar.shell'
'patterns': [
{
'match': '\\\\(a|b|e|f|n|r|t|v|\\\\|\')'
'name': 'constant.character.escape.ansi-c.shell'
}
{
'match': '\\\\[0-9]{3}'
'name': 'constant.character.escape.octal.shell'
}
{
'match': '\\\\x[0-9a-fA-F]{2}'
'name': 'constant.character.escape.hex.shell'
}
{
'match': '\\\\c.'
'name': 'constant.character.escape.control-char.shell'
}
]
}
]
'support':
'patterns': [
{
'match': '(?<=^|\\s)(?::|\\.)(?=\\s|;|&|$)'
'name': 'support.function.builtin.shell'
}
{
'match': '(?<![-/./=/])\\b(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)\\b(?![-/=/])'
'name': 'support.function.builtin.shell'
}
{
'match': '(?<![-/./=/])\\b(?:apm|apt|apt-get|apt-cache|apt-key|add-apt-repository|apt-add-repository|apt-config|apt-mark|aptitude|bundle|composer|dpkg|dpkg-architecture|dpkg-buildflags|dpkg-buildpackage|dpkg-checkbuilddeps|dpkg-deb|dpkg-distaddfile|dpkg-divert|dpkg-genchanges|dpkg-gencontrol|dpkg-gensymbols|dpkg-log-summary|dpkg-maintscript-helper|dpkg-mergechangelogs|dpkg-name|dpkg-parsechangelog|dpkg-query|dpkg-scanpackages|dpkg-scansources|dpkg-shlibdeps|dpkg-source|dpkg-split|dpkg-statoverride|dpkg-trigger|dpkg-vendor|dnf|ebuild|emerge|equery|equo|explodepkg|gem|installpkg|lein|makepkg|npm|osc|pacman|pkg|pkg_add|pip|pip3|pkgtool|removepkg|revdep-rebuild|rpm|rpm2archive|rpm2cpio|rpmargs|rpmbuild|rpmdb|rpmdev-bumpspec|rpmdev-checksig|rpmdev-cksum|rpmdev-diff|rpmdev-extract|rpmdev-md5|rpmdev-newinit|rpmdev-newspec|rpmdev-packager|rpmdev-rmdevelrpms|rpmdev-setuptree|rpmdev-sha1|rpmdev-sha224|rpmdev-sha256|rpmdev-sha384|rpmdev-sha512|rpmdev-sort|rpmdev-sum|rpmdev-vercmp|rpmdev-wipetree|rpmdiff|rpmdrake|rpmelfsym|rpmfile|rpm-find-leaves|rpmgraph|rpminfo|rpmkeys|rpmlint|rpmls|rpmpeek|rpmquery|rpmsodiff|rpmsoname|rpmspec|rpmverify|slapt-get|updpkgsums|upgradepkg|urpme|urpmf|urpmi|urpmi.update|urpmq|yum|zypper)\\b(?![-/=/])'
'name': 'support.function.packages.shell'
}
{
'match': '(?<![-/./=/])\\b(?:base32|base64|basename|cat|chcon|chgrp|chmod|chown|chroot|cksum|comm|cp|csplit|cut|date|dd|df|dir|dircolors|dirname|du|echo|env|expand|expr|factor|false|fmt|fold|head|hostid|id|install|join|link|ln|logname|ls|md5sum|mkdir|mkfifo|mknod|mktemp|mv|nice|nl|nohup|nproc|numfmt|od|paste|pathchk|pinky|pr|printenv|printf|ptx|pwd|readlink|realpath|rm|rmdir|runcon|seq|sha1sum|sha224sum|sha256sum|sha384sum|sha512sum|shred|shuf|sleep|sort|split|stat|stdbuf|stty|sum|sync|tac|tail|tee|test|timeout|touch|tr|true|truncate|tsort|tty|uname|unexpand|uniq|unlink|users|vdir|wc|who|whoami|yes)\\b(?![-/=/])'
'name': 'support.function.coreutils.shell'
}
{
'match': '(?<![-/./=/])\\b(?:awk|curl|ed|grep|nano|sed|sudo|vi|vim|wget)\\b(?![-/./=/])'
'name': 'support.function.extras.shell'
}
{
'match': '(?<![-/./=/@/])\\b(?:bzr|cvs|git|hg|svn)\\b(?![-/./=/+/@/])'
'name': 'support.function.vcs.shell'
}
{
'begin': 'sudo '
'beginCaptures':
'0':
'name': 'support.function.extras.shell'
'name': 'support.function.coreutils.shell'
'end': '(?:base32|base64|basename|cat|chcon|chgrp|chmod|chown|chroot|cksum|comm|cp|csplit|cut|date|dd|df|dir|dircolors|dirname|du|echo|env|expand|expr|factor|false|fmt|fold|head|hostid|id|install|join|link|ln|logname|ls|md5sum|mkdir|mkfifo|mknod|mktemp|mv|nice|nl|nohup|nproc|numfmt|od|paste|pathchk|pinky|pr|printenv|printf|ptx|pwd|readlink|realpath|rm|rmdir|runcon|seq|sha1sum|sha224sum|sha256sum|sha384sum|sha512sum|shred|shuf|sleep|sort|split|stat|stdbuf|stty|sum|sync|tac|tail|tee|test|timeout|touch|tr|true|truncate|tsort|tty|uname|unexpand|uniq|unlink|users|vdir|wc|who|whoami|yes)'
'endCaptures':
'0':
'name': 'support.function.coreutils.shell'
}
]
'variable':
'patterns': [
{
'begin': '^\\b[_a-zA-Z0-9]*'
'beginCaptures':
'0':
'name': 'variable.definition.name'
'captures':
'1':
'name': 'variable.definition.other'
'end': '='
'endCaptures':
'0':
'name': 'variable.definition.equal'
}
{
'captures':
'1':
'name': 'punctuation.definition.variable.shell'
'match': '(\\$)[a-zA-Z_][a-zA-Z0-9_]*'
'name': 'variable.other.normal.shell'
}
{
'captures':
'1':
'name': 'punctuation.definition.variable.shell'
'match': '(\\$)[-*@#?$!0_]'
'name': 'variable.other.special.shell'
}
{
'captures':
'1':
'name': 'punctuation.definition.variable.shell'
'match': '(\\$)[1-9]'
'name': 'variable.other.positional.shell'
}
{
'begin': '\\$\\{'
'captures':
'0':
'name': 'punctuation.definition.variable.shell'
'end': '\\}'
'name': 'variable.other.bracket.shell'
'patterns': [
{
'match': '!|:[-=?]?|\\*|@|#{1,2}|%{1,2}|/'
'name': 'keyword.operator.expansion.shell'
}
{
'captures':
'1':
'name': 'punctuation.section.array.shell'
'3':
'name': 'punctuation.section.array.shell'
'match': '(\\[)([^\\]]+)(\\])'
}
{
'include': '#variable'
}
{
'include': '#string'
}
]
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment