Impressive list. However, I think the 'docs' section is not quite right, as it was intended to link to existing documentation elsewhere. Personally, I'd put this subpage into the 'scripting' namespace (although, for such a big page, that's probably not fitting for every bit of information in there). We could also introduce a new namespace, like 'misc'…
Moving pages is pretty simple for wiki admins. Ask #zsh on freenode. – ft
Feel free to move it wherever you wish, but do leave a redirect here. I don't feel knowledgeable enough about the organization of the wiki to have an opinion one way or another. – jessew
zrjam, thanks so much for the additions you've done! I really appreciate it. – jessew
I just learned about the various and quite useful indexes available. And I wish I'd known of them sooner, and I wish the links to specific functions, options, etc. were both more visible, and more transparent; what I'd like to be able to do was write: %compdef% and have it automagically link to http://zsh.dotsrc.org/Doc/Release/zsh_19.html#IDX1162 – we should be able to do this, right?
This is intended to be a list of the various and multiple meanings in the zsh of all the characters on the keyboard. Flags, punctuation, etc. It is sorted in ASCII order, but with case-folded. While it is intended to be complete, it is not so yet. (Quite a bit of the phrasing used below was copied from the ZSH Reference Card.)
!(pat) is a KSH_GLOB operator meaning anything but pat!expr is the general form of history expansion! is a history event designator expansion referring to the previous command%! is a prompt expansion for the current history event number! is a shell variable automatically set to the Process ID of last background process!= means not-equal within a double square bracket test expression! expr is the boolean NOT within a double square bracket test expression!-foo prevents -foo from being completed within the argument specifiers used by the _arguments completion utility function” serves to mark double quoted strings, a type of quoting (the others are single quoting (') and quoting the backslash (\))!” turns off the history mechanism for the current listX# is an EXTENDED_GLOB globbing pattern meaning zero or more occurrences of element XX## is an EXTENDED_GLOB globbing pattern meaning one or more occurrences of element X(#X) is the form of all EXTENDED_GLOB globbing flags, where X is the flag.#, in scripts (or interactively, with INTERACTIVE_COMMENTS set) makes the rest of the line a comment.!# is a history expansion referring to the current command line so far.%# is a prompt expansion used to identify root shells. ${var#pat} is a parameter expansion form returning the minimum match of pat removed from head${var##pat} is a parameter expansion form returning the maximum match of pat removed from head${var:#pat} is a parameter expansion form returning var unless pat matches, then empty${#var} is a parameter expansion form returning the length of var in words (if it's an array) or bytes otherwise.# is a shell variable automatically set to the number of arguments to a script or function$var performs variable (i.e. parameter) substitution/expansion${var} performs parameter substitution/expansion, and allows parameter expansion flags and alternative parameter expansion forms.$(cmds) turns into the output of cmds, i.e. does command substitution (this is a synonym for `cmds` (backquoting))$1) performs arithmetic substitution, i.e. it does math on expr and turns into the result:$ is a history expansion word selector referring to the last command argument; it's often used in the form of !!:$ which expands to the last argument of the previous command$ is a shell variable automatically set to the process ID of the main shell process% is a glob qualifier referring to special files%b is a glob qualifier referring to block special files%c is a glob qualifier referring to character special files% is a parameter expansion flag (e.g. ${(%)VARIABLE}) indicating that the string in VARIABLE should be prompt expanded%[optional integer]single character forms all prompt expansions; rather than duplicating them here, please look them up under their single character%% is a prompt expansion that expands to a percent character (i.e. ”%”)!?str?:% is a history expansion referring to the most recent word in the history matching str!% or !:% is a history expansion referring to the word matched by the last !?str? history expansion (the % is a word selector/designator)${var%pat} is a parameter expansion form returning the minimum match of pat removed from the tail end of the value of var${var%%pat} is a parameter expansion form returning the maximum match of pat removed from the tail end of the value of var% in arithmetic expansions is the modular operator%= in arithmetic expansions is the modular assignment operator%d in the value of the format completion zstyle refers to the specific format&& is used to connect pipelines (or single simple commands) into an AND sublist& is history argument modifier causing a previously set of search and replace strings to be re-used' is used to quote things; it is referred as single-quoting'' (two single quotes), when the option RC_QUOTES is on, get turned into one single quote when found inside a single-quoted string; otherwise, they just vanish (i.e. they end the string, and start a new one, which gets automatically joined with the last one)(list) executes list in a subshell(choices) enclose choices in a foreach statement(pat) is a glob pattern that groups globbing patterns(pat1|pat2) is a glob pattern that matches either pat1 or pat2:(* is a glob pattern referring to any string* is a glob qualifier referring to executable plain files (e.g. “*(*)”)**/ is a glob pattern referring to any number of directories, i.e. all subdirectories***/ same as ”***” but also follows symlinks*(pat) is a KSH_GLOB operator meaning zero or more copies of pat+//cmd// is a glob qualifier referring to files for which //cmd// evaluates to true (//cmd// must be a single word)$+VARIABLE returns 0 if VARIABLE is not set, and 1 if it is set (even if it is set to the empty string)+(pat) is a KSH_GLOB operator meaning one or more copies of pat- is a glob qualifier toggling link following behavior; i.e. does globing work on symbolic link targets, or the link files themselves (default is link files, not targets)<num1-num2> is a glob pattern meaning any number between num1 and num2; if num1 missing, from 0 to num2; if num2 missing, from num1 to infinity. is a glob quantifier referring to plain files/ is a glob quantifier referring to directories**/ is a glob pattern referring to any number of directories, i.e. all subdirectories-/ is an option to the _path_files completion function causing it to complete only directories-0 is a synonym for the CORRECT option0 is a shell variable automatically set to the name used to invoke the current shell; with the FUNCTION_ARGZERO option set, reflects the name of functions and scripts while within them-3 is a synonym for the NO_NO_MATCH option-4 is a synonym for the GLOB_DOTS option-5 is a synonym for the NOTIFY option-6 is a synonym for the BG_NICE option-7 is a synonym for the IGNORE_EOF option-8 is a synonym for the MARK_DIRS option-9 is a synonym for the AUTO_LIST option: separates parts of a zstyle context:class: is the form of all character classes, where class is one of alnum, alpha, etc; terminates a sublist, and is a synonym for a newline;; terminates a particular case within a case statement;& terminates a particular case within a case statement, but falls through<num1-num2> is a glob pattern meaning any number between num1 and num2; if num1 missing, from 0 to num2; if num2 missing, from num1 to infinity<(cmds) is a type of process substitution (expansion), which expands to a device file (or FIFO) holding the output of cmds= is a glob quantifier referring to sockets=(cmds) is a type of process substitution (expansion), which expands to temporary file holding the output of cmds<num1-num2> is a glob pattern meaning any number between num1 and num2; if num1 missing, from 0 to num2; if num2 missing, from num1 to infinity>(cmds) is a type of process substitution (expansion), which expands to a device file (or FIFO) which will be read for standard input by cmds? is a glob pattern matching any single character?(pat) is a KSH_GLOB operator matching zero or 1 copy of pat!?str is a history expansion referring to the last command containing str%? is a prompt expansion for the return status of most recently executed command ${var:?str} is a parameter expansion form which returns var if it is non-null, otherwise prints str(if given) as an error and aborts? is a shell variable automatically set to the status of the most recently executed commandtest?true_exp:false_exp is the C ternary if statement, usable only within arithmetic expressions@(pat) is a KSH_GLOB operator used to group patterns@ is a glob quantifier referring to symbolic links%@ is a prompt expansion expanding to the current time, in 12 hour (AM/PM) format. (%t is a synonym)@ is a parameter expansion flag causing arrays to be expanded even within double quotes@ is a shell variable automatically set to the list of positional parameters within a script or function; unlike argv, it splits into words even within double quotes.-a is a synonym for the ALL_EXPORT option-A and +A are options to the set builtin used for creating arrays(#anum) is an EXTENDED_GLOB globbing flag causing num approximations to be permitted in matchesa is a glob qualifier specifying a particular access time; its format is a followed by one of the letters Mwhms (referring to the time units: Months, weeks, hours, minutes or seconds) followed by a plus or minus (referring to at older than or newer than), followed by a number (to set how many time units)A is a glob qualifier specifying the group read permission is set, i.e. –r—– or 0040A is a parameter expansion flag which creates an array parameter AA is a parameter expansion flag which creates an associative array parametera is a parameter expansion flag causing sorting to be done on array index-a is a test expression operator which is true if the filename following it existsoa is a glob qualifier which causes the results to be sorted by access time; see under o for other sort orders-B is a synonym for the NO_BEEP option (#b) is an EXTENDED_GLOB globbing flag turning on backreferences, i.e. setting the shell parameters match, mbegin, & mend.(#B) is an EXTENDED_GLOB globbing flag turning off backreferences%b is a glob qualifier referring to block special files-C is a synonym for the NO_CLOBBER option %c is a glob qualifier referring to character special filesc is a glob qualifier specifying a particular inode change (attribute modification) time; it's format is c followed by one of the letters Mwhms (referring to the time units: Months, weeks, hours, minutes or seconds) followed by a plus or minus (referring to at older than or newer than), followed by a number (to set how many time units)oc is a glob qualifier which causes the results to be sorted by inode change (attribute modification) time; see under o for other sort orders-D is a synonym for the PUSHD_TO_HOME option ddev is a glob qualifier referring to files with a device number of devD is a glob qualifier which turns on the GLOB_DOTS optionoc is a glob qualifier which causes the results to be sorted with files in subdirectories first; see under o for other sort orders-e is a synonym for the ERR_EXIT option -E is a synonym for the PUSHD_SILENT option (#e) is an EXTENDED_GLOB globbing flag forcing the pattern to only match at the end of the test stringestring is a glob qualifier referring to files for which string evaluates to trueE is a glob qualifier specifying the group execute permission is set, i.e. —-x— or 0010-F is a synonym for the NO_GLOB option -f is a synonym for the NO_RCS option F is a glob quantifier referring to non-empty directoriesfspec is a glob quantifier referring to files with the chmod-style permissions of spec-f is an option to the _path_files completion function causing it to complete all files, as is the default-F files is an option to the _path_files completion function causing it to ignore, i.e. not complete files, overriding ignored-patterns-g is a synonym for the HIST_IGNORE_SPACE option -G is a synonym for the NULL_GLOB option G is a glob qualifier referring to files owned by a user in the same group as the current effective user (i.e. with the same effective GID)ggid is a glob qualifier referring to files owned by a user in gid (can be a name instead of a number)-g pat is an option to the _path_files completion function causing it to complete files that match pat-h is a synonym for the HIST_IGNORE_DUPS option -H is a synonym for the RM_STAR_SILENT option ah, ch or mh are glob qualifiers specifying a particular access time, inode change (attribute modification) time, or modification time; see under a, c or m for details-I is a synonym for the IGNORE_BRACES option -i is a synonym for the INTERACTIVE option (#i) is an EXTENDED_GLOB globbing flag causing case insensitive matching(#I) is an EXTENDED_GLOB globbing flag causing case sensitive matchingI is a glob qualifier specifying the group write permission is set, i.e. —w—- or 0020-J is a synonym for the AUTO_CD option%j is a prompt expansion referring to the number of jobs, as displayed by the jobs builtinj:str: is a parameter expansion flag causing the words expanded by the parameter to be joined with str in between-k is a synonym for the INTERACTIVE_COMMENTS option -K is a synonym for the NO_BANG_HIST option -l is a synonym for the LOGIN option -L is a synonym for the SUN_KEYBOARD_HACK option (#l) is an EXTENDED_GLOB globbing flag causing lower case to match upper casel-num and l+num are glob qualifiers referring to files with link counts less than (or greater than, for +) numoL is a glob qualifier which causes the results to be sorted by file size (Length); see under o for other sort ordersol is a glob qualifier which causes the results to be sorted by link count; see under o for other sort orders-m is a synonym for the MONITOR option -M is a synonym for the SINGLE_LINE_ZLE option (#m) is an EXTENDED_GLOB globbing flag causing the match data to be saved, i.e. the contents and length of the match are put in the shell parameters MATCH, MBEGIN and MENDm is a glob qualifier specifying a particular modification time; its format is m followed by one of the letters Mwhms (referring to the time units: Months, weeks, hours, minutes or seconds) followed by a plus or minus (referring to at older than or newer than), followed by a number (to set how many time units)M is a glob qualifier which causes directories to be marked (i.e. sets the MARK_DIRS option)(#M) is an EXTENDED_GLOB globbing flag causing the match data not be savedaM, am, cM or cm are glob qualifiers specifying a particular access time (the first two) or inode change (attribute modification) time; see under a or c for details. om is a glob qualifier which causes the results to be sorted by modification time; see under o for other sort orders-N is a synonym for the AUTO_PUSHD option -n is a synonym for the NO_EXEC option N is a glob qualifier which turns on the NULL_GLOB optionn is a glob qualifier which turns on the NUMERIC_GLOB_SORT optionon is a glob qualifier which causes the results to be sorted by name; see under o for other sort orders-O is a synonym for the CORRECT_ALL option o is a glob qualifier that selects a type of sorting; the choices are on, name (default); oL, size (Length); ol, link count; oa, access time, om, modification time, oc, inode change (attribute modification) time, od, files in subdirectories appear before those in the current directory at each level of the searchO is a glob qualifier that selects a type of sorting, reversed from o; the choices are the same as with o-p is a synonym for the PRIVILEGED option -P is a synonym for the RC_EXPAND_PARAM option p is a glob qualifier referring to named pipes (FIFOs)-Q is a synonym for the PATH_DIRS option(#qexpr) is an EXTENDED_GLOB globbing flag listing a set of glob qualifiers q is a history argument modifier which adds a layer of quotesQ is a history argument modifier which strips off a layer of quotesq is a parameter expansion flag causing the result to be quoted with backslashesqq is a parameter expansion flag causing the result to be quoted with single quotesqqq is a parameter expansion flag causing the result to be quoted with double quotesqqqq is a parameter expansion flag causing the result to be quoted with the $'…' formQ is a parameter expansion flag which strips off a layer of quotes-R is a synonym for the LONG_LIST_JOBS option -r is a synonym for the RESTRICTED option r is a glob qualifier specifying that matched files are readable by their ownersR is a glob quantifier referring world readable files-S is a synonym for the REC_EXACT option -s is a synonym for the SHIN_STDIN option (#s) is an EXTENDED_GLOB globbing flag forcing the pattern to only match at the beginning of the test strings is a glob quantifier referring to setuid files (set user id)s is a glob quantifier referring to setgid files (set group id)as, cs or ms are glob qualifiers specifying a particular access time, inode change (attribute modification) time, or modification time; see under a, c or m for details-T is a synonym for the CDABLE_VARS option -t is a synonym for the SINGLE_COMMAND option t is a glob quantifier referring to files with the sticky bit setT is a glob qualifier which causes directories, links, and special files to be marked (i.e. sets the LIST_TYPES option)-U is a synonym for the MAIL_WARNING option -u is a synonym for the NO_UNSET option U is a glob qualifier referring to files owned by the current effective UIDuuid is a glob qualifier referring to files owned by uid (can be a name instead of a number)-V is a synonym for the NO_PROMPT_CR option -v is a synonym for the VERBOSE option -W is a synonym for the AUTO_RESUME option -w is a synonym for the CHASE_LINKS option w is a glob qualifier specifying that matched files are writable by their ownersW is a glob quantifier referring world writable filesaw, cw or mw are glob qualifiers specifying a particular access time, inode change (attribute modification) time, or modification time; see under a, c or m for details.-W dirs is an option to the _path_files completion function causing it to look in dirs for files to complete-X is a synonym for the LIST_TYPES option -x is a synonym for the XTRACE option x is a glob qualifier specifying that matched files are executable by their owners X is a glob quantifier referring world executable files-Y is a synonym for the MENU_COMPLETE option -y is a synonym for the SH_WORD_SPLIT option -Z is a synonym for the ZLE option [[ cond ]] evaluates cond as a test expression, returning true or false[class] is a glob pattern meaning any single character in class[^class] is a glob pattern meaning any single character not in class[num] is a glob qualifier causing the pattern to only return only the numth result[beg,end] is a glob qualifier causing the pattern to only return the results between beg and end as if they were an array (beg and end can be expressions)[[^class] is a glob pattern meaning any single character not in class^pat is an EXTENDED_GLOB globbing pattern meaning anything that doesn't match pat^ is a glob quantifier which negates the following quantifiers^ is a history word selector which selects the first argument (i.e. a synonym for 1)${^var} is a parameter expansion form that causes the elements of var to be expanded like brace expansion{list} groups the commands in list, so they act like a single command, e.g. they can be redirected as a whole${var} performs parameter substitution/expansion, and allows parameter expansion flags and alternative parameter expansion forms (for which, see under their sections in this page)|| is used to connect pipelines (or single simple commands) into an OR sublist| , the pipe character, is used to redirect the output of one command into the input of another, forming a pipeline(pat1|pat2) is a glob pattern that matches either pat1 or pat2{pat~exclude_pat is an EXTENDED_GLOB globbing pattern meaning anything that matches pat and doesn't match exclude_pat