diff options
Diffstat (limited to 'runtime/syntax/zsh.vim')
-rw-r--r-- | runtime/syntax/zsh.vim | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/runtime/syntax/zsh.vim b/runtime/syntax/zsh.vim new file mode 100644 index 000000000..83763a627 --- /dev/null +++ b/runtime/syntax/zsh.vim @@ -0,0 +1,118 @@ +" Vim syntax file +" Language: Z shell (zsh) +" Maintainer: Felix von Leitner <leitner@math.fu-berlin.de> +" Heavily based on sh.vim by Lennart Schultz +" Last Change: 2003 May 11 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" String and Character contstants +" Highlight special characters (those which have a backslash) differently +syn match zshSpecial "\\\d\d\d\|\\[abcfnrtv\\']" +syn region zshSinglequote start=+'+ skip=+\\'+ end=+'+ +" A bunch of useful zsh keywords +" syn keyword zshFunction function +syn keyword zshStatement bg break cd chdir continue echo eval exec +syn keyword zshStatement exit export fg getopts hash jobs kill +syn keyword zshStatement pwd read readonly return set zshift function +syn keyword zshStatement stop suspend test times trap type ulimit +syn keyword zshStatement umask unset wait setopt compctl source +syn keyword zshStatement whence disown shift which unhash unalias +syn keyword zshStatement alias functions unfunction getln disable +syn keyword zshStatement vared getopt enable unsetopt autoload +syn keyword zshStatement bindkey pushln command limit unlimit fc +syn keyword zshStatement print builtin noglob sched r time +syn keyword zshStatement typeset declare local integer + +syn keyword zshConditional if else esac case then elif fi in +syn keyword zshRepeat while for do done + +" Following is worth to notice: command substitution, file redirection and functions (so these features turns red) +syn match zshFunctionName "\h\w*\s*()" +syn region zshCommandSub start=+`+ skip=+\\`+ end=+`+ +" contains=ALLBUT,zshFunction +syn match zshRedir "\d\=\(<\|<<\|>\|>>\)\(|\|&\d\)\=" + +syn keyword zshTodo contained TODO + +syn keyword zshShellVariables USER LOGNAME HOME PATH CDPATH SHELL +syn keyword zshShellVariables LC_TYPE LC_MESSAGE MAIL MAILCHECK +syn keyword zshShellVariables PS1 PS2 IFS EGID EUID ERRNO GID UID +syn keyword zshShellVariables HOST LINENO MACHTYPE OLDPWD OPTARG +syn keyword zshShellVariables OPTIND OSTYPE PPID PWD RANDOM SECONDS +syn keyword zshShellVariables SHLVL TTY signals TTYIDLE USERNAME +syn keyword zshShellVariables VENDOR ZSH_NAME ZSH_VERSION ARGV0 +syn keyword zshShellVariables BAUD COLUMNS cdpath DIRSTACKSIZE +syn keyword zshShellVariables FCEDIT fignore fpath histchars HISTCHARS +syn keyword zshShellVariables HISTFILE HISTSIZE KEYTIMEOUT LANG +syn keyword zshShellVariables LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES +syn keyword zshShellVariables LC_TIME LINES LISTMAX LOGCHECK mailpath +syn keyword zshShellVariables MAILPATH MANPATH manpath module_path +syn keyword zshShellVariables MODULE_PATH NULLCMD path POSTEDIT +syn keyword zshShellVariables PS3 PS4 PROMPT PROMPT2 PROMPT3 PROMPT4 +syn keyword zshShellVariables psvar PSVAR prompt READNULLCMD +syn keyword zshShellVariables REPORTTIME RPROMPT RPS1 SAVEHIST +syn keyword zshShellVariables SPROMPT STTY TIMEFMT TMOUT TMPPREFIX +syn keyword zshShellVariables watch WATCH WATCHFMT WORDCHARS ZDOTDIR +syn match zshSpecialShellVar "\$[-#@*$?!0-9]" +syn keyword zshSetVariables ignoreeof noclobber +syn region zshDerefOpr start="\${" end="}" contains=zshShellVariables +syn match zshDerefIdentifier "\$[a-zA-Z_][a-zA-Z0-9_]*\>" +syn match zshOperator "[][}{&;|)(]" + + + +syn match zshNumber "-\=\<\d\+\>" +syn match zshComment "#.*$" contains=zshNumber,zshTodo + + +syn match zshTestOpr "-\<[oeaznlg][tfqet]\=\>\|!\==\|-\<[b-gkLprsStuwjxOG]\>" +"syn region zshTest start="\[" skip="\\$" end="\]" contains=zshString,zshTestOpr,zshDerefIdentifier,zshDerefOpr +syn region zshString start=+"+ skip=+\\"+ end=+"+ contains=zshSpecial,zshOperator,zshDerefIdentifier,zshDerefOpr,zshSpecialShellVar,zshSinglequote,zshCommandSub + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_zsh_syntax_inits") + if version < 508 + let did_zsh_syntax_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink zshSinglequote zshString + HiLink zshConditional zshStatement + HiLink zshRepeat zshStatement + HiLink zshFunctionName zshFunction + HiLink zshCommandSub zshOperator + HiLink zshRedir zshOperator + HiLink zshSetVariables zshShellVariables + HiLink zshSpecialShellVar zshShellVariables + HiLink zshTestOpr zshOperator + HiLink zshDerefOpr zshSpecial + HiLink zshDerefIdentifier zshShellVariables + HiLink zshOperator Operator + HiLink zshStatement Statement + HiLink zshNumber Number + HiLink zshString String + HiLink zshComment Comment + HiLink zshSpecial Special + HiLink zshTodo Todo + HiLink zshShellVariables Special +" hi zshOperator term=underline ctermfg=6 guifg=Purple gui=bold +" hi zshShellVariables term=underline ctermfg=2 guifg=SeaGreen gui=bold +" hi zshFunction term=bold ctermbg=1 guifg=Red + + delcommand HiLink +endif + +let b:current_syntax = "zsh" + +" vim: ts=8 |