" Vim syntax file " Language: Z shell (zsh) " Maintainer: Felix von Leitner " 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 else command -nargs=+ HiLink hi def link 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