diff options
| author | Craig Jennings <c@cjennings.net> | 2025-10-12 11:47:26 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-10-12 11:47:26 -0500 |
| commit | 092304d9e0ccc37cc0ddaa9b136457e56a1cac20 (patch) | |
| tree | ea81999b8442246c978b364dd90e8c752af50db5 /assets/info/zsh.info-2 | |
changing repositories
Diffstat (limited to 'assets/info/zsh.info-2')
| -rw-r--r-- | assets/info/zsh.info-2 | 6945 |
1 files changed, 6945 insertions, 0 deletions
diff --git a/assets/info/zsh.info-2 b/assets/info/zsh.info-2 new file mode 100644 index 00000000..efadefa0 --- /dev/null +++ b/assets/info/zsh.info-2 @@ -0,0 +1,6945 @@ +This is zsh.info, produced by makeinfo version 4.8 from ./zsh.texi. + +INFO-DIR-SECTION Utilities +START-INFO-DIR-ENTRY +* ZSH: (zsh). The Z Shell Manual. +END-INFO-DIR-ENTRY + + +File: zsh.info, Node: Parameters Used By The Shell, Prev: Parameters Set By The Shell, Up: Parameters + +15.6 Parameters Used By The Shell +================================= + +The following parameters are used by the shell. Again, `<S>' indicates +that the parameter is special and `<Z>' indicates that the parameter +does not exist when the shell initializes in sh or ksh emulation mode. + +In cases where there are two parameters with an upper- and lowercase +form of the same name, such as path and PATH, the lowercase form is an +array and the uppercase form is a scalar with the elements of the array +joined together by colons. These are similar to tied parameters +created via `typeset -T'. The normal use for the colon-separated form +is for exporting to the environment, while the array form is easier to +manipulate within the shell. Note that unsetting either of the pair +will unset the other; they retain their special properties when +recreated, and recreating one of the pair will recreate the other. + + +ARGV0 + If exported, its value is used as the argv[0] of external commands. + Usually used in constructs like `ARGV0=emacs nethack'. + +BAUD + The rate in bits per second at which data reaches the terminal. + The line editor will use this value in order to compensate for a + slow terminal by delaying updates to the display until necessary. + If the parameter is unset or the value is zero the compensation + mechanism is turned off. The parameter is not set by default. + + This parameter may be profitably set in some circumstances, e.g. + for slow modems dialing into a communications server, or on a slow + wide area network. It should be set to the baud rate of the + slowest part of the link for best performance. + +cdpath <S> <Z> (CDPATH <S>) + An array (colon-separated list) of directories specifying the + search path for the cd command. + +COLUMNS <S> + The number of columns for this terminal session. Used for + printing select lists and for the line editor. + +CORRECT_IGNORE + If set, is treated as a pattern during spelling correction. Any + potential correction that matches the pattern is ignored. For + example, if the value is `_*' then completion functions (which, by + convention, have names beginning with `_') will never be offered + as spelling corrections. The pattern does not apply to the + correction of file names, as applied by the CORRECT_ALL option (so + with the example just given files beginning with `_' in the current + directory would still be completed). + +CORRECT_IGNORE_FILE + If set, is treated as a pattern during spelling correction of file + names. Any file name that matches the pattern is never offered as + a correction. For example, if the value is `.*' then dot file + names will never be offered as spelling corrections. This is + useful with the CORRECT_ALL option. + +DIRSTACKSIZE + The maximum size of the directory stack, by default there is no + limit. If the stack gets larger than this, it will be truncated + automatically. This is useful with the AUTO_PUSHD option. + +ENV + If the ENV environment variable is set when zsh is invoked as sh + or ksh, $ENV is sourced after the profile scripts. The value of + ENV is subjected to parameter expansion, command substitution, and + arithmetic expansion before being interpreted as a pathname. Note + that ENV is _not_ used unless the shell is interactive and zsh is + emulating `sh' or `ksh'. + +FCEDIT + The default editor for the fc builtin. If FCEDIT is not set, the + parameter EDITOR is used; if that is not set either, a builtin + default, usually vi, is used. + +fignore <S> <Z> (FIGNORE <S>) + An array (colon separated list) containing the suffixes of files + to be ignored during filename completion. However, if completion + only generates files with suffixes in this list, then these files + are completed anyway. + +fpath <S> <Z> (FPATH <S>) + An array (colon separated list) of directories specifying the + search path for function definitions. This path is searched when + a function with the -u attribute is referenced. If an executable + file is found, then it is read and executed in the current + environment. + +histchars <S> + Three characters used by the shell's history and lexical analysis + mechanism. The first character signals the start of a history + expansion (default `!'). The second character signals the start + of a quick history substitution (default `^'). The third + character is the comment character (default `#'). + + The characters must be in the ASCII character set; any attempt to + set histchars to characters with a locale-dependent meaning will be + rejected with an error message. + +HISTCHARS <S> <Z> + Same as histchars. (Deprecated.) + +HISTFILE + The file to save the history in when an interactive shell exits. + If unset, the history is not saved. + +HISTORY_IGNORE + If set, is treated as a pattern at the time history files are + written. Any potential history entry that matches the pattern is + skipped. For example, if the value is `fc *' then commands that + invoke the interactive history editor are never written to the + history file. + + Note that HISTORY_IGNORE defines a single pattern: to specify + alternatives use the `(FIRST|SECOND|...)' syntax. + + Compare the HIST_NO_STORE option or the zshaddhistory hook, either + of which would prevent such commands from being added to the + interactive history at all. If you wish to use HISTORY_IGNORE to + stop history being added in the first place, you can define the + following hook: + + + zshaddhistory() { + emulate -L zsh + ## uncomment if HISTORY_IGNORE + ## should use EXTENDED_GLOB syntax + # setopt extendedglob + [[ $1 != ${~HISTORY_IGNORE} ]] + } + +HISTSIZE <S> + The maximum number of events stored in the internal history list. + If you use the HIST_EXPIRE_DUPS_FIRST option, setting this value + larger than the SAVEHIST size will give you the difference as a + cushion for saving duplicated history events. + + If this is made local, it is not implicitly set to 0, but may be + explicitly set locally. + +HOME <S> + The default argument for the cd command. This is not set + automatically by the shell in sh, ksh or csh emulation, but it is + typically present in the environment anyway, and if it becomes set + it has its usual special behaviour. + +IFS <S> + Internal field separators (by default space, tab, newline and + NUL), that are used to separate words which result from command or + parameter expansion and words read by the read builtin. Any + characters from the set space, tab and newline that appear in the + IFS are called _IFS white space_. One or more IFS white space + characters or one non-IFS white space character together with any + adjacent IFS white space character delimit a field. If an IFS + white space character appears twice consecutively in the IFS, this + character is treated as if it were not an IFS white space + character. + + If the parameter is unset, the default is used. Note this has a + different effect from setting the parameter to an empty string. + +KEYBOARD_HACK + This variable defines a character to be removed from the end of the + command line before interpreting it (interactive shells only). It + is intended to fix the problem with keys placed annoyingly close + to return and replaces the SUNKEYBOARDHACK option which did this + for backquotes only. Should the chosen character be one of + singlequote, doublequote or backquote, there must also be an odd + number of them on the command line for the last one to be removed. + + For backward compatibility, if the SUNKEYBOARDHACK option is + explicitly set, the value of KEYBOARD_HACK reverts to backquote. + If the option is explicitly unset, this variable is set to empty. + +KEYTIMEOUT + The time the shell waits, in hundredths of seconds, for another + key to be pressed when reading bound multi-character sequences. + +LANG <S> + This variable determines the locale category for any category not + specifically selected via a variable starting with `LC_'. + +LC_ALL <S> + This variable overrides the value of the `LANG' variable and the + value of any of the other variables starting with `LC_'. + +LC_COLLATE <S> + This variable determines the locale category for character + collation information within ranges in glob brackets and for + sorting. + +LC_CTYPE <S> + This variable determines the locale category for character handling + functions. If the MULTIBYTE option is in effect this variable or + LANG should contain a value that reflects the character set in + use, even if it is a single-byte character set, unless only the + 7-bit subset (ASCII) is used. For example, if the character set + is ISO-8859-1, a suitable value might be en_US.iso88591 (certain + Linux distributions) or en_US.ISO8859-1 (MacOS). + +LC_MESSAGES <S> + This variable determines the language in which messages should be + written. Note that zsh does not use message catalogs. + +LC_NUMERIC <S> + This variable affects the decimal point character and thousands + separator character for the formatted input/output functions and + string conversion functions. Note that zsh ignores this setting + when parsing floating point mathematical expressions. + +LC_TIME <S> + This variable determines the locale category for date and time + formatting in prompt escape sequences. + +LINES <S> + The number of lines for this terminal session. Used for printing + select lists and for the line editor. + +LISTMAX + In the line editor, the number of matches to list without asking + first. If the value is negative, the list will be shown if it + spans at most as many lines as given by the absolute value. If + set to zero, the shell asks only if the top of the listing would + scroll off the screen. + +LOGCHECK + The interval in seconds between checks for login/logout activity + using the watch parameter. + +MAIL + If this parameter is set and mailpath is not set, the shell looks + for mail in the specified file. + +MAILCHECK + The interval in seconds between checks for new mail. + +mailpath <S> <Z> (MAILPATH <S>) + An array (colon-separated list) of filenames to check for new + mail. Each filename can be followed by a `?' and a message that + will be printed. The message will undergo parameter expansion, + command substitution and arithmetic expansion with the variable $_ + defined as the name of the file that has changed. The default + message is `You have new mail'. If an element is a directory + instead of a file the shell will recursively check every file in + every subdirectory of the element. + +manpath <S> <Z> (MANPATH <S> <Z>) + An array (colon-separated list) whose value is not used by the + shell. The manpath array can be useful, however, since setting it + also sets MANPATH, and vice versa. + +match +mbegin +mend + Arrays set by the shell when the b globbing flag is used in pattern + matches. See the subsection _Globbing flags_ in *Note Filename + Generation::. + +MATCH +MBEGIN +MEND + Set by the shell when the m globbing flag is used in pattern + matches. See the subsection _Globbing flags_ in *Note Filename + Generation::. + +module_path <S> <Z> (MODULE_PATH <S>) + An array (colon-separated list) of directories that zmodload + searches for dynamically loadable modules. This is initialized to + a standard pathname, usually `/usr/local/lib/zsh/$ZSH_VERSION'. + (The `/usr/local/lib' part varies from installation to + installation.) For security reasons, any value set in the + environment when the shell is started will be ignored. + + These parameters only exist if the installation supports dynamic + module loading. + +NULLCMD <S> + The command name to assume if a redirection is specified with no + command. Defaults to cat. For `sh'/`ksh' behavior, change this + to :. For `csh'-like behavior, unset this parameter; the shell + will print an error message if null commands are entered. + +path <S> <Z> (PATH <S>) + An array (colon-separated list) of directories to search for + commands. When this parameter is set, each directory is scanned + and all files found are put in a hash table. + +POSTEDIT <S> + This string is output whenever the line editor exits. It usually + contains termcap strings to reset the terminal. + +PROMPT <S> <Z> +PROMPT2 <S> <Z> +PROMPT3 <S> <Z> +PROMPT4 <S> <Z> + Same as PS1, PS2, PS3 and PS4, respectively. + +prompt <S> <Z> + Same as PS1. + +PROMPT_EOL_MARK + When the PROMPT_CR and PROMPT_SP options are set, the + PROMPT_EOL_MARK parameter can be used to customize how the end of + partial lines are shown. This parameter undergoes prompt + expansion, with the PROMPT_PERCENT option set. If not set, the + default behavior is equivalent to the value `%B%S%#%s%b'. + +PS1 <S> + The primary prompt string, printed before a command is read. It + undergoes a special form of expansion before being displayed; see + *Note Prompt Expansion::. The default is `%m%# '. + +PS2 <S> + The secondary prompt, printed when the shell needs more information + to complete a command. It is expanded in the same way as PS1. + The default is `%_> ', which displays any shell constructs or + quotation marks which are currently being processed. + +PS3 <S> + Selection prompt used within a select loop. It is expanded in the + same way as PS1. The default is `?# '. + +PS4 <S> + The execution trace prompt. Default is `+%N:%i> ', which displays + the name of the current shell structure and the line number within + it. In sh or ksh emulation, the default is `+ '. + +psvar <S> <Z> (PSVAR <S>) + An array (colon-separated list) whose elements can be used in + PROMPT strings. Setting psvar also sets PSVAR, and vice versa. + +READNULLCMD <S> + The command name to assume if a single input redirection is + specified with no command. Defaults to more. + +REPORTMEMORY + If nonnegative, commands whose maximum resident set size (roughly + speaking, main memory usage) in kilobytes is greater than this + value have timing statistics reported. The format used to output + statistics is the value of the TIMEFMT parameter, which is the same + as for the REPORTTIME variable and the time builtin; note that by + default this does not output memory usage. Appending " max RSS + %M" to the value of TIMEFMT causes it to output the value that + triggered the report. If REPORTTIME is also in use, at most a + single report is printed for both triggers. This feature requires + the getrusage() system call, commonly supported by modern + Unix-like systems. + +REPORTTIME + If nonnegative, commands whose combined user and system execution + times (measured in seconds) are greater than this value have timing + statistics printed for them. Output is suppressed for commands + executed within the line editor, including completion; commands + explicitly marked with the time keyword still cause the summary to + be printed in this case. + +REPLY + This parameter is reserved by convention to pass string values + between shell scripts and shell builtins in situations where a + function call or redirection are impossible or undesirable. The + read builtin and the select complex command may set REPLY, and + filename generation both sets and examines its value when + evaluating certain expressions. Some modules also employ REPLY + for similar purposes. + +reply + As REPLY, but for array values rather than strings. + +RPROMPT <S> +RPS1 <S> + This prompt is displayed on the right-hand side of the screen when + the primary prompt is being displayed on the left. This does not + work if the SINGLE_LINE_ZLE option is set. It is expanded in the + same way as PS1. + +RPROMPT2 <S> +RPS2 <S> + This prompt is displayed on the right-hand side of the screen when + the secondary prompt is being displayed on the left. This does + not work if the SINGLE_LINE_ZLE option is set. It is expanded in + the same way as PS2. + +SAVEHIST + The maximum number of history events to save in the history file. + + If this is made local, it is not implicitly set to 0, but may be + explicitly set locally. + +SPROMPT <S> + The prompt used for spelling correction. The sequence `%R' + expands to the string which presumably needs spelling correction, + and `%r' expands to the proposed correction. All other prompt + escapes are also allowed. + + The actions available at the prompt are [nyae]: + n (`no') (default) + Discard the correction and run the command. + + y (`yes') + Make the correction and run the command. + + a (`abort') + Discard the entire command line without running it. + + e (`edit') + Resume editing the command line. + +STTY + If this parameter is set in a command's environment, the shell + runs the stty command with the value of this parameter as + arguments in order to set up the terminal before executing the + command. The modes apply only to the command, and are reset when + it finishes or is suspended. If the command is suspended and + continued later with the fg or wait builtins it will see the modes + specified by STTY, as if it were not suspended. This + (intentionally) does not apply if the command is continued via + `kill -CONT'. STTY is ignored if the command is run in the + background, or if it is in the environment of the shell but not + explicitly assigned to in the input line. This avoids running stty + at every external command by accidentally exporting it. Also note + that STTY should not be used for window size specifications; these + will not be local to the command. + +TERM <S> + The type of terminal in use. This is used when looking up termcap + sequences. An assignment to TERM causes zsh to re-initialize the + terminal, even if the value does not change (e.g., `TERM=$TERM'). + It is necessary to make such an assignment upon any change to the + terminal definition database or terminal type in order for the new + settings to take effect. + +TERMINFO <S> + A reference to your terminfo database, used by the `terminfo' + library when the system has it; see man page terminfo(5). If set, + this causes the shell to reinitialise the terminal, making the + workaround `TERM=$TERM' unnecessary. + +TERMINFO_DIRS <S> + A colon-seprarated list of terminfo databases, used by the + `terminfo' library when the system has it; see man page + terminfo(5). This variable is only used by certain terminal + libraries, in particular ncurses; see man page terminfo(5) to + check support on your system. If set, this causes the shell to + reinitialise the terminal, making the workaround `TERM=$TERM' + unnecessary. Note that unlike other colon-separated arrays this + is not tied to a zsh array. + +TIMEFMT + The format of process time reports with the time keyword. The + default is `%J %U user %S system %P cpu %*E total'. Recognizes + the following escape sequences, although not all may be available + on all systems, and some that are available may not be useful: + + + %% + A `%'. + + %U + CPU seconds spent in user mode. + + %S + CPU seconds spent in kernel mode. + + %E + Elapsed time in seconds. + + %P + The CPU percentage, computed as 100*(%U+%S)/%E. + + %W + Number of times the process was swapped. + + %X + The average amount in (shared) text space used in kilobytes. + + %D + The average amount in (unshared) data/stack space used in + kilobytes. + + %K + The total space used (%X+%D) in kilobytes. + + %M + The maximum memory the process had in use at any time in + kilobytes. + + %F + The number of major page faults (page needed to be brought + from disk). + + %R + The number of minor page faults. + + %I + The number of input operations. + + %O + The number of output operations. + + %r + The number of socket messages received. + + %s + The number of socket messages sent. + + %k + The number of signals received. + + %w + Number of voluntary context switches (waits). + + %c + Number of involuntary context switches. + + %J + The name of this job. + + A star may be inserted between the percent sign and flags printing + time (e.g., `%*E'); this causes the time to be printed in + `HH:MM:SS.TTT' format (hours and minutes are only printed if they + are not zero). Alternatively, `m' or `u' may be used (e.g., + `%mE') to produce time output in milliseconds or microseconds, + respectively. + +TMOUT + If this parameter is nonzero, the shell will receive an ALRM + signal if a command is not entered within the specified number of + seconds after issuing a prompt. If there is a trap on SIGALRM, it + will be executed and a new alarm is scheduled using the value of + the TMOUT parameter after executing the trap. If no trap is set, + and the idle time of the terminal is not less than the value of the + TMOUT parameter, zsh terminates. Otherwise a new alarm is + scheduled to TMOUT seconds after the last keypress. + +TMPPREFIX + A pathname prefix which the shell will use for all temporary files. + Note that this should include an initial part for the file name as + well as any directory names. The default is `/tmp/zsh'. + +TMPSUFFIX + A filename suffix which the shell will use for temporary files + created by process substitutions (e.g., `=(LIST)'). Note that the + value should include a leading dot `.' if intended to be + interpreted as a file extension. The default is not to append any + suffix, thus this parameter should be assigned only when needed + and then unset again. + +watch <S> <Z> (WATCH <S>) + An array (colon-separated list) of login/logout events to report. + + If it contains the single word `all', then all login/logout events + are reported. If it contains the single word `notme', then all + events are reported as with `all' except $USERNAME. + + An entry in this list may consist of a username, an `@' followed + by a remote hostname, and a `%' followed by a line (tty). Any of + these may be a pattern (be sure to quote this during the + assignment to watch so that it does not immediately perform file + generation); the setting of the EXTENDED_GLOB option is respected. + Any or all of these components may be present in an entry; if a + login/logout event matches all of them, it is reported. + + For example, with the EXTENDED_GLOB option set, the following: + + + watch=('^(pws|barts)') + + causes reports for activity associated with any user other than pws + or barts. + +WATCHFMT + The format of login/logout reports if the watch parameter is set. + Default is `%n has %a %l from %m'. Recognizes the following + escape sequences: + + + %n + The name of the user that logged in/out. + + %a + The observed action, i.e. "logged on" or "logged off". + + %l + The line (tty) the user is logged in on. + + %M + The full hostname of the remote host. + + %m + The hostname up to the first `.'. If only the IP address is + available or the utmp field contains the name of an X-windows + display, the whole name is printed. + + _NOTE:_ The `%m' and `%M' escapes will work only if there is + a host name field in the utmp on your machine. Otherwise + they are treated as ordinary strings. + + %S (%s) + Start (stop) standout mode. + + %U (%u) + Start (stop) underline mode. + + %B (%b) + Start (stop) boldface mode. + + %t + %@ + The time, in 12-hour, am/pm format. + + %T + The time, in 24-hour format. + + %w + The date in `DAY-DD' format. + + %W + The date in `MM/DD/YY' format. + + %D + The date in `YY-MM-DD' format. + + %D{STRING} + The date formatted as STRING using the strftime function, with + zsh extensions as described by *Note Prompt Expansion::. + + %(X:TRUE-TEXT:FALSE-TEXT) + Specifies a ternary expression. The character following the + X is arbitrary; the same character is used to separate the + text for the "true" result from that for the "false" result. + Both the separator and the right parenthesis may be escaped + with a backslash. Ternary expressions may be nested. + + The test character X may be any one of `l', `n', `m' or `M', + which indicate a `true' result if the corresponding escape + sequence would return a non-empty value; or it may be `a', + which indicates a `true' result if the watched user has + logged in, or `false' if he has logged out. Other characters + evaluate to neither true nor false; the entire expression is + omitted in this case. + + If the result is `true', then the TRUE-TEXT is formatted + according to the rules above and printed, and the FALSE-TEXT + is skipped. If `false', the TRUE-TEXT is skipped and the + FALSE-TEXT is formatted and printed. Either or both of the + branches may be empty, but both separators must be present in + any case. + + +WORDCHARS <S> + A list of non-alphanumeric characters considered part of a word by + the line editor. + +ZBEEP + If set, this gives a string of characters, which can use all the + same codes as the bindkey command as described in *Note The + zsh/zle Module::, that will be output to the terminal instead of + beeping. This may have a visible instead of an audible effect; + for example, the string `\e[?5h\e[?5l' on a vt100 or xterm will + have the effect of flashing reverse video on and off (if you + usually use reverse video, you should use the string + `\e[?5l\e[?5h' instead). This takes precedence over the NOBEEP + option. + +ZDOTDIR + The directory to search for shell startup files (.zshrc, etc), if + not $HOME. + +zle_bracketed_paste + Many terminal emulators have a feature that allows applications to + identify when text is pasted into the terminal rather than being + typed normally. For ZLE, this means that special characters such + as tabs and newlines can be inserted instead of invoking editor + commands. Furthermore, pasted text forms a single undo event and + if the region is active, pasted text will replace the region. + + This two-element array contains the terminal escape sequences for + enabling and disabling the feature. These escape sequences are + used to enable bracketed paste when ZLE is active and disable it + at other times. Unsetting the parameter has the effect of + ensuring that bracketed paste remains disabled. + +zle_highlight + An array describing contexts in which ZLE should highlight the + input text. See *Note Character Highlighting::. + +ZLE_LINE_ABORTED + This parameter is set by the line editor when an error occurs. It + contains the line that was being edited at the point of the error. + `print -zr - $ZLE_LINE_ABORTED' can be used to recover the line. + Only the most recent line of this kind is remembered. + +ZLE_REMOVE_SUFFIX_CHARS +ZLE_SPACE_SUFFIX_CHARS + These parameters are used by the line editor. In certain + circumstances suffixes (typically space or slash) added by the + completion system will be removed automatically, either because + the next editing command was not an insertable character, or + because the character was marked as requiring the suffix to be + removed. + + These variables can contain the sets of characters that will cause + the suffix to be removed. If ZLE_REMOVE_SUFFIX_CHARS is set, those + characters will cause the suffix to be removed; if + ZLE_SPACE_SUFFIX_CHARS is set, those characters will cause the + suffix to be removed and replaced by a space. + + If ZLE_REMOVE_SUFFIX_CHARS is not set, the default behaviour is + equivalent to: + + + ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|' + + If ZLE_REMOVE_SUFFIX_CHARS is set but is empty, no characters have + this behaviour. ZLE_SPACE_SUFFIX_CHARS takes precedence, so that + the following: + + + ZLE_SPACE_SUFFIX_CHARS=$'&|' + + causes the characters `&' and `|' to remove the suffix but to + replace it with a space. + + To illustrate the difference, suppose that the option + AUTO_REMOVE_SLASH is in effect and the directory DIR has just been + completed, with an appended /, following which the user types `&'. + The default result is `DIR&'. With ZLE_REMOVE_SUFFIX_CHARS set + but without including `&' the result is `DIR/&'. With + ZLE_SPACE_SUFFIX_CHARS set to include `&' the result is `DIR &'. + + Note that certain completions may provide their own suffix removal + or replacement behaviour which overrides the values described here. + See the completion system documentation in *Note Completion + System::. + +ZLE_RPROMPT_INDENT <S> + If set, used to give the indentation between the right hand side of + the right prompt in the line editor as given by RPS1 or RPROMPT + and the right hand side of the screen. If not set, the value 1 is + used. + + Typically this will be used to set the value to 0 so that the + prompt appears flush with the right hand side of the screen. This + is not the default as many terminals do not handle this correctly, + in particular when the prompt appears at the extreme bottom right + of the screen. Recent virtual terminals are more likely to handle + this case correctly. Some experimentation is necessary. + + + +File: zsh.info, Node: Options, Next: Shell Builtin Commands, Prev: Parameters, Up: Top + +16 Options +********** + + + +* Menu: + +* Specifying Options:: +* Description of Options:: +* Option Aliases:: +* Single Letter Options:: + + +File: zsh.info, Node: Specifying Options, Next: Description of Options, Up: Options + +16.1 Specifying Options +======================= + +Options are primarily referred to by name. These names are case +insensitive and underscores are ignored. For example, `allexport' is +equivalent to `A__lleXP_ort'. + +The sense of an option name may be inverted by preceding it with `no', +so `setopt No_Beep' is equivalent to `unsetopt beep'. This inversion +can only be done once, so `nonobeep' is _not_ a synonym for `beep'. +Similarly, `tify' is not a synonym for `nonotify' (the inversion of +`notify'). + +Some options also have one or more single letter names. There are two +sets of single letter options: one used by default, and another used to +emulate `sh'/`ksh' (used when the SH_OPTION_LETTERS option is set). +The single letter options can be used on the shell command line, or +with the set, setopt and unsetopt builtins, as normal Unix options +preceded by `-'. + +The sense of the single letter options may be inverted by using `+' +instead of `-'. Some of the single letter option names refer to an +option being off, in which case the inversion of that name refers to +the option being on. For example, `+n' is the short name of `exec', and +`-n' is the short name of its inversion, `noexec'. + +In strings of single letter options supplied to the shell at startup, +trailing whitespace will be ignored; for example the string `-f ' +will be treated just as `-f', but the string `-f i' is an error. This +is because many systems which implement the `#!' mechanism for calling +scripts do not strip trailing whitespace. + + + + +File: zsh.info, Node: Description of Options, Next: Option Aliases, Prev: Specifying Options, Up: Options + +16.2 Description of Options +=========================== + +In the following list, options set by default in all emulations are +marked <D>; those set by default only in csh, ksh, sh, or zsh +emulations are marked <C>, <K>, <S>, <Z> as appropriate. When listing +options (by `setopt', `unsetopt', `set -o' or `set +o'), those turned +on by default appear in the list prefixed with `no'. Hence (unless +KSH_OPTION_PRINT is set), `setopt' shows all options whose settings are +changed from the default. + + + +16.2.1 Changing Directories +--------------------------- + + +AUTO_CD (-J) + If a command is issued that can't be executed as a normal command, + and the command is the name of a directory, perform the cd command + to that directory. This option is only applicable if the option + SHIN_STDIN is set, i.e. if commands are being read from standard + input. The option is designed for interactive use; it is + recommended that cd be used explicitly in scripts to avoid + ambiguity. + +AUTO_PUSHD (-N) + Make cd push the old directory onto the directory stack. + +CDABLE_VARS (-T) + If the argument to a cd command (or an implied cd with the AUTO_CD + option set) is not a directory, and does not begin with a slash, + try to expand the expression as if it were preceded by a `~' (see + *Note Filename Expansion::). + +CD_SILENT + Never print the working directory after a cd (whether explicit or + implied with the AUTO_CD option set). cd normally prints the + working directory when the argument given to it was -, a stack + entry, or the name of a directory found under CDPATH. Note that + this is distinct from pushd's stack-printing behaviour, which is + controlled by PUSHD_SILENT. This option overrides the + printing-related effects of POSIX_CD. + +CHASE_DOTS + When changing to a directory containing a path segment `..' which + would otherwise be treated as canceling the previous segment in + the path (in other words, `foo/..' would be removed from the path, + or if `..' is the first part of the path, the last part of the + current working directory would be removed), instead resolve the + path to the physical directory. This option is overridden by + CHASE_LINKS. + + For example, suppose /foo/bar is a link to the directory /alt/rod. + Without this option set, `cd /foo/bar/..' changes to /foo; with it + set, it changes to /alt. The same applies if the current directory + is /foo/bar and `cd ..' is used. Note that all other symbolic + links in the path will also be resolved. + +CHASE_LINKS (-w) + Resolve symbolic links to their true values when changing + directory. This also has the effect of CHASE_DOTS, i.e. a `..' + path segment will be treated as referring to the physical parent, + even if the preceding path segment is a symbolic link. + +POSIX_CD <K> <S> + Modifies the behaviour of cd, chdir and pushd commands to make + them more compatible with the POSIX standard. The behaviour with + the option unset is described in the documentation for the cd + builtin in *Note Shell Builtin Commands::. If the option is set, + the shell does not test for directories beneath the local + directory (`.') until after all directories in cdpath have been + tested, and the cd and chdir commands do not recognise arguments + of the form `{+|-}N' as directory stack entries. + + Also, if the option is set, the conditions under which the shell + prints the new directory after changing to it are modified. It is + no longer restricted to interactive shells (although printing of + the directory stack with pushd is still limited to interactive + shells); and any use of a component of CDPATH, including a `.' but + excluding an empty component that is otherwise treated as `.', + causes the directory to be printed. + +PUSHD_IGNORE_DUPS + Don't push multiple copies of the same directory onto the + directory stack. + +PUSHD_MINUS + Exchanges the meanings of `+' and `-' when used with a number to + specify a directory in the stack. + +PUSHD_SILENT (-E) + Do not print the directory stack after pushd or popd. + +PUSHD_TO_HOME (-D) + Have pushd with no arguments act like `pushd $HOME'. + + + +16.2.2 Completion +----------------- + + +ALWAYS_LAST_PROMPT <D> + If unset, key functions that list completions try to return to the + last prompt if given a numeric argument. If set these functions + try to return to the last prompt if given _no_ numeric argument. + +ALWAYS_TO_END + If a completion is performed with the cursor within a word, and a + full completion is inserted, the cursor is moved to the end of the + word. That is, the cursor is moved to the end of the word if + either a single match is inserted or menu completion is performed. + +AUTO_LIST (-9) <D> + Automatically list choices on an ambiguous completion. + +AUTO_MENU <D> + Automatically use menu completion after the second consecutive + request for completion, for example by pressing the tab key + repeatedly. This option is overridden by MENU_COMPLETE. + +AUTO_NAME_DIRS + Any parameter that is set to the absolute name of a directory + immediately becomes a name for that directory, that will be used + by the `%~' and related prompt sequences, and will be available + when completion is performed on a word starting with `~'. + (Otherwise, the parameter must be used in the form `~PARAM' first.) + +AUTO_PARAM_KEYS <D> + If a parameter name was completed and a following character + (normally a space) automatically inserted, and the next character + typed is one of those that have to come directly after the name + (like `}', `:', etc.), the automatically added character is + deleted, so that the character typed comes immediately after the + parameter name. Completion in a brace expansion is affected + similarly: the added character is a `,', which will be removed if + `}' is typed next. + +AUTO_PARAM_SLASH <D> + If a parameter is completed whose content is the name of a + directory, then add a trailing slash instead of a space. + +AUTO_REMOVE_SLASH <D> + When the last character resulting from a completion is a slash and + the next character typed is a word delimiter, a slash, or a + character that ends a command (such as a semicolon or an + ampersand), remove the slash. + +BASH_AUTO_LIST + On an ambiguous completion, automatically list choices when the + completion function is called twice in succession. This takes + precedence over AUTO_LIST. The setting of LIST_AMBIGUOUS is + respected. If AUTO_MENU is set, the menu behaviour will then start + with the third press. Note that this will not work with + MENU_COMPLETE, since repeated completion calls immediately cycle + through the list in that case. + +COMPLETE_ALIASES + Prevents aliases on the command line from being internally + substituted before completion is attempted. The effect is to make + the alias a distinct command for completion purposes. + +COMPLETE_IN_WORD + If unset, the cursor is set to the end of the word if completion is + started. Otherwise it stays there and completion is done from both + ends. + +GLOB_COMPLETE + When the current word has a glob pattern, do not insert all the + words resulting from the expansion but generate matches as for + completion and cycle through them like MENU_COMPLETE. The matches + are generated as if a `*' was added to the end of the word, or + inserted at the cursor when COMPLETE_IN_WORD is set. This + actually uses pattern matching, not globbing, so it works not only + for files but for any completion, such as options, user names, etc. + + Note that when the pattern matcher is used, matching control (for + example, case-insensitive or anchored matching) cannot be used. + This limitation only applies when the current word contains a + pattern; simply turning on the GLOB_COMPLETE option does not have + this effect. + +HASH_LIST_ALL <D> + Whenever a command completion or spelling correction is attempted, + make sure the entire command path is hashed first. This makes the + first completion slower but avoids false reports of spelling + errors. + +LIST_AMBIGUOUS <D> + This option works when AUTO_LIST or BASH_AUTO_LIST is also set. + If there is an unambiguous prefix to insert on the command line, + that is done without a completion list being displayed; in other + words, auto-listing behaviour only takes place when nothing would + be inserted. In the case of BASH_AUTO_LIST, this means that the + list will be delayed to the third call of the function. + +LIST_BEEP <D> + Beep on an ambiguous completion. More accurately, this forces the + completion widgets to return status 1 on an ambiguous completion, + which causes the shell to beep if the option BEEP is also set; + this may be modified if completion is called from a user-defined + widget. + +LIST_PACKED + Try to make the completion list smaller (occupying less lines) by + printing the matches in columns with different widths. + +LIST_ROWS_FIRST + Lay out the matches in completion lists sorted horizontally, that + is, the second match is to the right of the first one, not under + it as usual. + +LIST_TYPES (-X) <D> + When listing files that are possible completions, show the type of + each file with a trailing identifying mark. + +MENU_COMPLETE (-Y) + On an ambiguous completion, instead of listing possibilities or + beeping, insert the first match immediately. Then when completion + is requested again, remove the first match and insert the second + match, etc. When there are no more matches, go back to the first + one again. reverse-menu-complete may be used to loop through the + list in the other direction. This option overrides AUTO_MENU. + +REC_EXACT (-S) + If the string on the command line exactly matches one of the + possible completions, it is accepted, even if there is another + completion (i.e. that string with something else added) that also + matches. + + + +16.2.3 Expansion and Globbing +----------------------------- + + +BAD_PATTERN (+2) <C> <Z> + If a pattern for filename generation is badly formed, print an + error message. (If this option is unset, the pattern will be left + unchanged.) + +BARE_GLOB_QUAL <Z> + In a glob pattern, treat a trailing set of parentheses as a + qualifier list, if it contains no `|', `(' or (if special) `~' + characters. See *Note Filename Generation::. + +BRACE_CCL + Expand expressions in braces which would not otherwise undergo + brace expansion to a lexically ordered list of all the characters. + See *Note Brace Expansion::. + +CASE_GLOB <D> + Make globbing (filename generation) sensitive to case. Note that + other uses of patterns are always sensitive to case. If the + option is unset, the presence of any character which is special to + filename generation will cause case-insensitive matching. For + example, cvs(/) can match the directory CVS owing to the presence + of the globbing flag (unless the option BARE_GLOB_QUAL is unset). + +CASE_MATCH <D> + Make regular expressions using the zsh/regex module (including + matches with =~) sensitive to case. + +CSH_NULL_GLOB <C> + If a pattern for filename generation has no matches, delete the + pattern from the argument list; do not report an error unless all + the patterns in a command have no matches. Overrides NOMATCH. + +EQUALS <Z> + Perform = filename expansion. (See *Note Filename Expansion::.) + +EXTENDED_GLOB + Treat the `#', `~' and `^' characters as part of patterns for + filename generation, etc. (An initial unquoted `~' always + produces named directory expansion.) + +FORCE_FLOAT + Constants in arithmetic evaluation will be treated as floating + point even without the use of a decimal point; the values of + integer variables will be converted to floating point when used in + arithmetic expressions. Integers in any base will be converted. + +GLOB (+F, ksh: +f) <D> + Perform filename generation (globbing). (See *Note Filename + Generation::.) + +GLOB_ASSIGN <C> + If this option is set, filename generation (globbing) is performed + on the right hand side of scalar parameter assignments of the form + `NAME=PATTERN (e.g. `foo=*'). If the result has more than one + word the parameter will become an array with those words as + arguments. This option is provided for backwards compatibility + only: globbing is always performed on the right hand side of array + assignments of the form `NAME=(VALUE)' (e.g. `foo=(*)') and this + form is recommended for clarity; with this option set, it is not + possible to predict whether the result will be an array or a + scalar. + +GLOB_DOTS (-4) + Do not require a leading `.' in a filename to be matched + explicitly. + +GLOB_STAR_SHORT + When this option is set and the default zsh-style globbing is in + effect, the pattern `**/*' can be abbreviated to `**' and the + pattern `***/*' can be abbreviated to ***. Hence `**.c' finds a + file ending in .c in any subdirectory, and `***.c' does the same + while also following symbolic links. A / immediately after the + `**' or `***' forces the pattern to be treated as the + unabbreviated form. + +GLOB_SUBST <C> <K> <S> + Treat any characters resulting from parameter expansion as being + eligible for filename expansion and filename generation, and any + characters resulting from command substitution as being eligible + for filename generation. Braces (and commas in between) do not + become eligible for expansion. + +HIST_SUBST_PATTERN + Substitutions using the :s and :& history modifiers are performed + with pattern matching instead of string matching. This occurs + wherever history modifiers are valid, including glob qualifiers + and parameters. See *Note Modifiers::. + +IGNORE_BRACES (-I) <S> + Do not perform brace expansion. For historical reasons this also + includes the effect of the IGNORE_CLOSE_BRACES option. + +IGNORE_CLOSE_BRACES + When neither this option nor IGNORE_BRACES is set, a sole close + brace character `}' is syntactically significant at any point on a + command line. This has the effect that no semicolon or newline is + necessary before the brace terminating a function or current shell + construct. When either option is set, a closing brace is + syntactically significant only in command position. Unlike + IGNORE_BRACES, this option does not disable brace expansion. + + For example, with both options unset a function may be defined in + the following fashion: + + + args() { echo $# } + + while if either option is set, this does not work and something + equivalent to the following is required: + + + args() { echo $#; } + + +KSH_GLOB <K> + In pattern matching, the interpretation of parentheses is affected + by a preceding `@', `*', `+', `?' or `!'. See *Note Filename + Generation::. + +MAGIC_EQUAL_SUBST + All unquoted arguments of the form `ANYTHING=EXPRESSION' appearing + after the command name have filename expansion (that is, where + EXPRESSION has a leading `~' or `=') performed on EXPRESSION as if + it were a parameter assignment. The argument is not otherwise + treated specially; it is passed to the command as a single + argument, and not used as an actual parameter assignment. For + example, in echo foo=~/bar:~/rod, both occurrences of ~ would be + replaced. Note that this happens anyway with typeset and similar + statements. + + This option respects the setting of the KSH_TYPESET option. In + other words, if both options are in effect, arguments looking like + assignments will not undergo word splitting. + +MARK_DIRS (-8, ksh: -X) + Append a trailing `/' to all directory names resulting from + filename generation (globbing). + +MULTIBYTE <D> + Respect multibyte characters when found in strings. When this + option is set, strings are examined using the system library to + determine how many bytes form a character, depending on the + current locale. This affects the way characters are counted in + pattern matching, parameter values and various delimiters. + + The option is on by default if the shell was compiled with + MULTIBYTE_SUPPORT; otherwise it is off by default and has no effect + if turned on. + + If the option is off a single byte is always treated as a single + character. This setting is designed purely for examining strings + known to contain raw bytes or other values that may not be + characters in the current locale. It is not necessary to unset + the option merely because the character set for the current locale + does not contain multibyte characters. + + The option does not affect the shell's editor, which always uses + the locale to determine multibyte characters. This is because the + character set displayed by the terminal emulator is independent of + shell settings. + +NOMATCH (+3) <C> <Z> + If a pattern for filename generation has no matches, print an + error, instead of leaving it unchanged in the argument list. This + also applies to file expansion of an initial `~' or `='. + +NULL_GLOB (-G) + If a pattern for filename generation has no matches, delete the + pattern from the argument list instead of reporting an error. + Overrides NOMATCH. + +NUMERIC_GLOB_SORT + If numeric filenames are matched by a filename generation pattern, + sort the filenames numerically rather than lexicographically. + +RC_EXPAND_PARAM (-P) + Array expansions of the form `FOO${XX}BAR', where the parameter XX + is set to (A B C), are substituted with `FOOABAR FOOBBAR FOOCBAR' + instead of the default `FOOA B CBAR'. Note that an empty array + will therefore cause all arguments to be removed. + +REMATCH_PCRE + If set, regular expression matching with the =~ operator will use + Perl-Compatible Regular Expressions from the PCRE library. (The + zsh/pcre module must be available.) If not set, regular + expressions will use the extended regexp syntax provided by the + system libraries. + +SH_GLOB <K> <S> + Disables the special meaning of `(', `|', `)' and '<' for globbing + the result of parameter and command substitutions, and in some + other places where the shell accepts patterns. If SH_GLOB is set + but KSH_GLOB is not, the shell allows the interpretation of + subshell expressions enclosed in parentheses in some cases where + there is no space before the opening parenthesis, e.g. !(true) is + interpreted as if there were a space after the !. This option is + set by default if zsh is invoked as sh or ksh. + +UNSET (+u, ksh: +u) <K> <S> <Z> + Treat unset parameters as if they were empty when substituting, + and as if they were zero when reading their values in arithmetic + expansion and arithmetic commands. Otherwise they are treated as + an error. + +WARN_CREATE_GLOBAL + Print a warning message when a global parameter is created in a + function by an assignment or in math context. This often + indicates that a parameter has not been declared local when it + should have been. Parameters explicitly declared global from + within a function using typeset -g do not cause a warning. Note + that there is no warning when a local parameter is assigned to in + a nested function, which may also indicate an error. + +WARN_NESTED_VAR + Print a warning message when an existing parameter from an + enclosing function scope, or global, is set in a function by an + assignment or in math context. Assignment to shell special + parameters does not cause a warning. This is the companion to + WARN_CREATE_GLOBAL as in this case the warning is only printed + when a parameter is _not_ created. Where possible, use of typeset + -g to set the parameter suppresses the error, but note that this + needs to be used every time the parameter is set. To restrict the + effect of this option to a single function scope, use `functions + -W'. + + For example, the following code produces a warning for the + assignment inside the function nested as that overrides the value + within toplevel + + + toplevel() { + local foo="in fn" + nested + } + nested() { + foo="in nested" + } + setopt warn_nested_var + toplevel + + + +16.2.4 History +-------------- + + +APPEND_HISTORY <D> + If this is set, zsh sessions will append their history list to the + history file, rather than replace it. Thus, multiple parallel zsh + sessions will all have the new entries from their history lists + added to the history file, in the order that they exit. The file + will still be periodically re-written to trim it when the number + of lines grows 20% beyond the value specified by $SAVEHIST (see + also the HIST_SAVE_BY_COPY option). + +BANG_HIST (+K) <C> <Z> + Perform textual history expansion, `csh'-style, treating the + character `!' specially. + +EXTENDED_HISTORY <C> + Save each command's beginning timestamp (in seconds since the + epoch) and the duration (in seconds) to the history file. The + format of this prefixed data is: + + `: <BEGINNING TIME>:<ELAPSED SECONDS>;<COMMAND>'. + +HIST_ALLOW_CLOBBER + Add `|' to output redirections in the history. This allows history + references to clobber files even when CLOBBER is unset. + +HIST_BEEP <D> + Beep in ZLE when a widget attempts to access a history entry which + isn't there. + +HIST_EXPIRE_DUPS_FIRST + If the internal history needs to be trimmed to add the current + command line, setting this option will cause the oldest history + event that has a duplicate to be lost before losing a unique event + from the list. You should be sure to set the value of HISTSIZE to + a larger number than SAVEHIST in order to give you some room for + the duplicated events, otherwise this option will behave just like + HIST_IGNORE_ALL_DUPS once the history fills up with unique events. + +HIST_FCNTL_LOCK + When writing out the history file, by default zsh uses ad-hoc file + locking to avoid known problems with locking on some operating + systems. With this option locking is done by means of the + system's fcntl call, where this method is available. On recent + operating systems this may provide better performance, in + particular avoiding history corruption when files are stored on + NFS. + +HIST_FIND_NO_DUPS + When searching for history entries in the line editor, do not + display duplicates of a line previously found, even if the + duplicates are not contiguous. + +HIST_IGNORE_ALL_DUPS + If a new command line being added to the history list duplicates an + older one, the older command is removed from the list (even if it + is not the previous event). + +HIST_IGNORE_DUPS (-h) + Do not enter command lines into the history list if they are + duplicates of the previous event. + +HIST_IGNORE_SPACE (-g) + Remove command lines from the history list when the first + character on the line is a space, or when one of the expanded + aliases contains a leading space. Only normal aliases (not global + or suffix aliases) have this behaviour. Note that the command + lingers in the internal history until the next command is entered + before it vanishes, allowing you to briefly reuse or edit the + line. If you want to make it vanish right away without entering + another command, type a space and press return. + +HIST_LEX_WORDS + By default, shell history that is read in from files is split into + words on all white space. This means that arguments with quoted + whitespace are not correctly handled, with the consequence that + references to words in history lines that have been read from a + file may be inaccurate. When this option is set, words read in + from a history file are divided up in a similar fashion to normal + shell command line handling. Although this produces more + accurately delimited words, if the size of the history file is + large this can be slow. Trial and error is necessary to decide. + +HIST_NO_FUNCTIONS + Remove function definitions from the history list. Note that the + function lingers in the internal history until the next command is + entered before it vanishes, allowing you to briefly reuse or edit + the definition. + +HIST_NO_STORE + Remove the history (fc -l) command from the history list when + invoked. Note that the command lingers in the internal history + until the next command is entered before it vanishes, allowing you + to briefly reuse or edit the line. + +HIST_REDUCE_BLANKS + Remove superfluous blanks from each command line being added to + the history list. + +HIST_SAVE_BY_COPY <D> + When the history file is re-written, we normally write out a copy + of the file named $HISTFILE.new and then rename it over the old + one. However, if this option is unset, we instead truncate the old + history file and write out the new version in-place. If one of the + history-appending options is enabled, this option only has an + effect when the enlarged history file needs to be re-written to + trim it down to size. Disable this only if you have special + needs, as doing so makes it possible to lose history entries if + zsh gets interrupted during the save. + + When writing out a copy of the history file, zsh preserves the old + file's permissions and group information, but will refuse to write + out a new file if it would change the history file's owner. + +HIST_SAVE_NO_DUPS + When writing out the history file, older commands that duplicate + newer ones are omitted. + +HIST_VERIFY + Whenever the user enters a line with history expansion, don't + execute the line directly; instead, perform history expansion and + reload the line into the editing buffer. + +INC_APPEND_HISTORY + This option works like APPEND_HISTORY except that new history lines + are added to the $HISTFILE incrementally (as soon as they are + entered), rather than waiting until the shell exits. The file + will still be periodically re-written to trim it when the number + of lines grows 20% beyond the value specified by $SAVEHIST (see + also the HIST_SAVE_BY_COPY option). + +INC_APPEND_HISTORY_TIME + This option is a variant of INC_APPEND_HISTORY in which, where + possible, the history entry is written out to the file after the + command is finished, so that the time taken by the command is + recorded correctly in the history file in EXTENDED_HISTORY format. + This means that the history entry will not be available + immediately from other instances of the shell that are using the + same history file. + + This option is only useful if INC_APPEND_HISTORY and SHARE_HISTORY + are turned off. The three options should be considered mutually + exclusive. + +SHARE_HISTORY <K> + This option both imports new commands from the history file, and + also causes your typed commands to be appended to the history file + (the latter is like specifying INC_APPEND_HISTORY, which should be + turned off if this option is in effect). The history lines are + also output with timestamps ala EXTENDED_HISTORY (which makes it + easier to find the spot where we left off reading the file after + it gets re-written). + + By default, history movement commands visit the imported lines as + well as the local lines, but you can toggle this on and off with + the set-local-history zle binding. It is also possible to create + a zle widget that will make some commands ignore imported + commands, and some include them. + + If you find that you want more control over when commands get + imported, you may wish to turn SHARE_HISTORY off, + INC_APPEND_HISTORY or INC_APPEND_HISTORY_TIME (see above) on, and + then manually import commands whenever you need them using `fc + -RI'. + + + +16.2.5 Initialisation +--------------------- + + +ALL_EXPORT (-a, ksh: -a) + All parameters subsequently defined are automatically exported. + +GLOBAL_EXPORT <Z> + If this option is set, passing the -x flag to the builtins declare, + float, integer, readonly and typeset (but not local) will also set + the -g flag; hence parameters exported to the environment will + not be made local to the enclosing function, unless they were + already or the flag +g is given explicitly. If the option is + unset, exported parameters will be made local in just the same way + as any other parameter. + + This option is set by default for backward compatibility; it is not + recommended that its behaviour be relied upon. Note that the + builtin export always sets both the -x and -g flags, and hence its + effect extends beyond the scope of the enclosing function; this is + the most portable way to achieve this behaviour. + +GLOBAL_RCS (-d) <D> + If this option is unset, the startup files /etc/zprofile, + /etc/zshrc, /etc/zlogin and /etc/zlogout will not be run. It can + be disabled and re-enabled at any time, including inside local + startup files (.zshrc, etc.). + +RCS (+f) <D> + After /etc/zshenv is sourced on startup, source the .zshenv, + /etc/zprofile, .zprofile, /etc/zshrc, .zshrc, /etc/zlogin, + .zlogin, and .zlogout files, as described in *Note Files::. If + this option is unset, the /etc/zshenv file is still sourced, but + any of the others will not be; it can be set at any time to + prevent the remaining startup files after the currently executing + one from being sourced. + + + +16.2.6 Input/Output +------------------- + + +ALIASES <D> + Expand aliases. + +CLOBBER (+C, ksh: +C) <D> + Allows `>' redirection to truncate existing files. Otherwise `>!' + or `>|' must be used to truncate a file. + + If the option is not set, and the option APPEND_CREATE is also not + set, `>>!' or `>>|' must be used to create a file. If either + option is set, `>>' may be used. + +CORRECT (-0) + Try to correct the spelling of commands. Note that, when the + HASH_LIST_ALL option is not set or when some directories in the + path are not readable, this may falsely report spelling errors the + first time some commands are used. + + The shell variable CORRECT_IGNORE may be set to a pattern to match + words that will never be offered as corrections. + +CORRECT_ALL (-O) + Try to correct the spelling of all arguments in a line. + + The shell variable CORRECT_IGNORE_FILE may be set to a pattern to + match file names that will never be offered as corrections. + +DVORAK + Use the Dvorak keyboard instead of the standard qwerty keyboard as + a basis for examining spelling mistakes for the CORRECT and + CORRECT_ALL options and the spell-word editor command. + +FLOW_CONTROL <D> + If this option is unset, output flow control via start/stop + characters (usually assigned to ^S/^Q) is disabled in the shell's + editor. + +IGNORE_EOF (-7) + Do not exit on end-of-file. Require the use of exit or logout + instead. However, ten consecutive EOFs will cause the shell to + exit anyway, to avoid the shell hanging if its tty goes away. + + Also, if this option is set and the Zsh Line Editor is used, + widgets implemented by shell functions can be bound to EOF + (normally Control-D) without printing the normal warning message. + This works only for normal widgets, not for completion widgets. + +INTERACTIVE_COMMENTS (-k) <K> <S> + Allow comments even in interactive shells. + +HASH_CMDS <D> + Note the location of each command the first time it is executed. + Subsequent invocations of the same command will use the saved + location, avoiding a path search. If this option is unset, no + path hashing is done at all. However, when CORRECT is set, + commands whose names do not appear in the functions or aliases + hash tables are hashed in order to avoid reporting them as + spelling errors. + +HASH_DIRS <D> + Whenever a command name is hashed, hash the directory containing + it, as well as all directories that occur earlier in the path. + Has no effect if neither HASH_CMDS nor CORRECT is set. + +HASH_EXECUTABLES_ONLY + When hashing commands because of HASH_CMDS, check that the file to + be hashed is actually an executable. This option is unset by + default as if the path contains a large number of commands, or + consists of many remote files, the additional tests can take a + long time. Trial and error is needed to show if this option is + beneficial. + +MAIL_WARNING (-U) + Print a warning message if a mail file has been accessed since the + shell last checked. + +PATH_DIRS (-Q) + Perform a path search even on command names with slashes in them. + Thus if `/usr/local/bin' is in the user's path, and he or she types + `X11/xinit', the command `/usr/local/bin/X11/xinit' will be + executed (assuming it exists). Commands explicitly beginning with + `/', `./' or `../' are not subject to the path search. This also + applies to the `.' and source builtins. + + Note that subdirectories of the current directory are always + searched for executables specified in this form. This takes place + before any search indicated by this option, and regardless of + whether `.' or the current directory appear in the command search + path. + +PATH_SCRIPT <K> <S> + If this option is not set, a script passed as the first non-option + argument to the shell must contain the name of the file to open. + If this option is set, and the script does not specify a directory + path, the script is looked for first in the current directory, + then in the command path. See *Note Invocation::. + +PRINT_EIGHT_BIT + Print eight bit characters literally in completion lists, etc. + This option is not necessary if your system correctly returns the + printability of eight bit characters (see man page ctype(3)). + +PRINT_EXIT_VALUE (-1) + Print the exit value of programs with non-zero exit status. This + is only available at the command line in interactive shells. + +RC_QUOTES + Allow the character sequence `''' to signify a single quote within + singly quoted strings. Note this does not apply in quoted strings + using the format $'...', where a backslashed single quote can be + used. + +RM_STAR_SILENT (-H) <K> <S> + Do not query the user before executing `rm *' or `rm path/*'. + +RM_STAR_WAIT + If querying the user before executing `rm *' or `rm path/*', first + wait ten seconds and ignore anything typed in that time. This + avoids the problem of reflexively answering `yes' to the query + when one didn't really mean it. The wait and query can always be + avoided by expanding the `*' in ZLE (with tab). + +SHORT_LOOPS <C> <Z> + Allow the short forms of for, repeat, select, if, and function + constructs. + +SUN_KEYBOARD_HACK (-L) + If a line ends with a backquote, and there are an odd number of + backquotes on the line, ignore the trailing backquote. This is + useful on some keyboards where the return key is too small, and + the backquote key lies annoyingly close to it. As an alternative + the variable KEYBOARD_HACK lets you choose the character to be + removed. + + + +16.2.7 Job Control +------------------ + + +AUTO_CONTINUE + With this option set, stopped jobs that are removed from the job + table with the disown builtin command are automatically sent a CONT + signal to make them running. + +AUTO_RESUME (-W) + Treat single word simple commands without redirection as + candidates for resumption of an existing job. + +BG_NICE (-6) <C> <Z> + Run all background jobs at a lower priority. This option is set + by default. + +CHECK_JOBS <Z> + Report the status of background and suspended jobs before exiting + a shell with job control; a second attempt to exit the shell will + succeed. NO_CHECK_JOBS is best used only in combination with + NO_HUP, else such jobs will be killed automatically. + + The check is omitted if the commands run from the previous command + line included a `jobs' command, since it is assumed the user is + aware that there are background or suspended jobs. A `jobs' + command run from one of the hook functions defined in the section + Special Functions in *Note Functions:: is not counted for this + purpose. + +CHECK_RUNNING_JOBS <Z> + Check for both running and suspended jobs when CHECK_JOBS is + enabled. When this option is disabled, zsh checks only for + suspended jobs, which matches the default behavior of bash. + + This option has no effect unless CHECK_JOBS is set. + +HUP <Z> + Send the HUP signal to running jobs when the shell exits. + +LONG_LIST_JOBS (-R) + Print job notifications in the long format by default. + +MONITOR (-m, ksh: -m) + Allow job control. Set by default in interactive shells. + +NOTIFY (-5, ksh: -b) <Z> + Report the status of background jobs immediately, rather than + waiting until just before printing a prompt. + +POSIX_JOBS <K> <S> + This option makes job control more compliant with the POSIX + standard. + + When the option is not set, the MONITOR option is unset on entry to + subshells, so that job control is no longer active. When the + option is set, the MONITOR option and job control remain active in + the subshell, but note that the subshell has no access to jobs in + the parent shell. + + When the option is not set, jobs put in the background or + foreground with bg or fg are displayed with the same information + that would be reported by jobs. When the option is set, only the + text is printed. The output from jobs itself is not affected by + the option. + + When the option is not set, job information from the parent shell + is saved for output within a subshell (for example, within a + pipeline). When the option is set, the output of jobs is empty + until a job is started within the subshell. + + In previous versions of the shell, it was necessary to enable + POSIX_JOBS in order for the builtin command wait to return the + status of background jobs that had already exited. This is no + longer the case. + + + +16.2.8 Prompting +---------------- + + +PROMPT_BANG <K> + If set, `!' is treated specially in prompt expansion. See *Note + Prompt Expansion::. + +PROMPT_CR (+V) <D> + Print a carriage return just before printing a prompt in the line + editor. This is on by default as multi-line editing is only + possible if the editor knows where the start of the line appears. + +PROMPT_SP <D> + Attempt to preserve a partial line (i.e. a line that did not end + with a newline) that would otherwise be covered up by the command + prompt due to the PROMPT_CR option. This works by outputting some + cursor-control characters, including a series of spaces, that + should make the terminal wrap to the next line when a partial line + is present (note that this is only successful if your terminal has + automatic margins, which is typical). + + When a partial line is preserved, by default you will see an + inverse+bold character at the end of the partial line: a `%' for + a normal user or a `#' for root. If set, the shell parameter + PROMPT_EOL_MARK can be used to customize how the end of partial + lines are shown. + + NOTE: if the PROMPT_CR option is not set, enabling this option will + have no effect. This option is on by default. + +PROMPT_PERCENT <C> <Z> + If set, `%' is treated specially in prompt expansion. See *Note + Prompt Expansion::. + +PROMPT_SUBST <K> <S> + If set, _parameter expansion_, _command substitution_ and + _arithmetic expansion_ are performed in prompts. Substitutions + within prompts do not affect the command status. + +TRANSIENT_RPROMPT + Remove any right prompt from display when accepting a command + line. This may be useful with terminals with other cut/paste + methods. + + + +16.2.9 Scripts and Functions +---------------------------- + + +ALIAS_FUNC_DEF <S> + By default, zsh does not allow the definition of functions using + the `NAME ()' syntax if NAME was expanded as an alias: this causes + an error. This is usually the desired behaviour, as otherwise the + combination of an alias and a function based on the same + definition can easily cause problems. + + When this option is set, aliases can be used for defining + functions. + + For example, consider the following definitions as they might + occur in a startup file. + + + alias foo=bar + foo() { + print This probably does not do what you expect. + } + + Here, foo is expanded as an alias to bar before the () is + encountered, so the function defined would be named bar. By + default this is instead an error in native mode. Note that + quoting any part of the function name, or using the keyword + function, avoids the problem, so is recommended when the function + name can also be an alias. + +C_BASES + Output hexadecimal numbers in the standard C format, for example + `0xFF' instead of the usual `16#FF'. If the option OCTAL_ZEROES + is also set (it is not by default), octal numbers will be treated + similarly and hence appear as `077' instead of `8#77'. This + option has no effect on the choice of the output base, nor on the + output of bases other than hexadecimal and octal. Note that these + formats will be understood on input irrespective of the setting of + C_BASES. + +C_PRECEDENCES + This alters the precedence of arithmetic operators to be more like + C and other programming languages; *Note Arithmetic Evaluation:: + has an explicit list. + +DEBUG_BEFORE_CMD <D> + Run the DEBUG trap before each command; otherwise it is run after + each command. Setting this option mimics the behaviour of ksh 93; + with the option unset the behaviour is that of ksh 88. + +ERR_EXIT (-e, ksh: -e) + If a command has a non-zero exit status, execute the ZERR trap, if + set, and exit. This is disabled while running initialization + scripts. + + The behaviour is also disabled inside DEBUG traps. In this case + the option is handled specially: it is unset on entry to the trap. + If the option DEBUG_BEFORE_CMD is set, as it is by default, and + the option ERR_EXIT is found to have been set on exit, then the + command for which the DEBUG trap is being executed is skipped. + The option is restored after the trap exits. + + Non-zero status in a command list containing && or || is ignored + for commands not at the end of the list. Hence + + + false && true + + does not trigger exit. + + Exiting due to ERR_EXIT has certain interactions with asynchronous + jobs noted in *Note Jobs & Signals::. + +ERR_RETURN + If a command has a non-zero exit status, return immediately from + the enclosing function. The logic is similar to that for ERR_EXIT, + except that an implicit return statement is executed instead of an + exit. This will trigger an exit at the outermost level of a + non-interactive script. + + Normally this option inherits the behaviour of ERR_EXIT that code + followed by `&&' `||' does not trigger a return. Hence in the + following: + + + summit || true + + no return is forced as the combined effect always has a zero return + status. + + Note. however, that if summit in the above example is itself a + function, code inside it is considered separately: it may force a + return from summit (assuming the option remains set within + summit), but not from the enclosing context. This behaviour is + different from ERR_EXIT which is unaffected by function scope. + +EVAL_LINENO <Z> + If set, line numbers of expressions evaluated using the builtin + eval are tracked separately of the enclosing environment. This + applies both to the parameter LINENO and the line number output by + the prompt escape %i. If the option is set, the prompt escape %N + will output the string `(eval)' instead of the script or function + name as an indication. (The two prompt escapes are typically + used in the parameter PS4 to be output when the option XTRACE is + set.) If EVAL_LINENO is unset, the line number of the surrounding + script or function is retained during the evaluation. + +EXEC (+n, ksh: +n) <D> + Do execute commands. Without this option, commands are read and + checked for syntax errors, but not executed. This option cannot + be turned off in an interactive shell, except when `-n' is + supplied to the shell at startup. + +FUNCTION_ARGZERO <C> <Z> + When executing a shell function or sourcing a script, set $0 + temporarily to the name of the function/script. Note that toggling + FUNCTION_ARGZERO from on to off (or off to on) does not change the + current value of $0. Only the state upon entry to the function or + script has an effect. Compare POSIX_ARGZERO. + +LOCAL_LOOPS + When this option is not set, the effect of break and continue + commands may propagate outside function scope, affecting loops in + calling functions. When the option is set in a calling function, a + break or a continue that is not caught within a called function + (regardless of the setting of the option within that function) + produces a warning and the effect is cancelled. + +LOCAL_OPTIONS <K> + If this option is set at the point of return from a shell function, + most options (including this one) which were in force upon entry to + the function are restored; options that are not restored are + PRIVILEGED and RESTRICTED. Otherwise, only this option, and the + LOCAL_LOOPS, XTRACE and PRINT_EXIT_VALUE options are restored. + Hence if this is explicitly unset by a shell function the other + options in force at the point of return will remain so. A shell + function can also guarantee itself a known shell configuration + with a formulation like `emulate -L zsh'; the -L activates + LOCAL_OPTIONS. + +LOCAL_PATTERNS + If this option is set at the point of return from a shell function, + the state of pattern disables, as set with the builtin command + `disable -p', is restored to what it was when the function was + entered. The behaviour of this option is similar to the effect of + LOCAL_OPTIONS on options; hence `emulate -L sh' (or indeed any + other emulation with the -L option) activates LOCAL_PATTERNS. + +LOCAL_TRAPS <K> + If this option is set when a signal trap is set inside a function, + then the previous status of the trap for that signal will be + restored when the function exits. Note that this option must be + set _prior_ to altering the trap behaviour in a function; unlike + LOCAL_OPTIONS, the value on exit from the function is irrelevant. + However, it does not need to be set before any global trap for + that to be correctly restored by a function. For example, + + + unsetopt localtraps + trap - INT + fn() { setopt localtraps; trap '' INT; sleep 3; } + + will restore normal handling of SIGINT after the function exits. + +MULTI_FUNC_DEF <Z> + Allow definitions of multiple functions at once in the form `fn1 + fn2...()'; if the option is not set, this causes a parse error. + Definition of multiple functions with the function keyword is + always allowed. Multiple function definitions are not often used + and can cause obscure errors. + +MULTIOS <Z> + Perform implicit `tee's or `cat's when multiple redirections are + attempted (see *Note Redirection::). + +OCTAL_ZEROES <S> + Interpret any integer constant beginning with a 0 as octal, per + IEEE Std 1003.2-1992 (ISO 9945-2:1993). This is not enabled by + default as it causes problems with parsing of, for example, date + and time strings with leading zeroes. + + Sequences of digits indicating a numeric base such as the `08' + component in `08#77' are always interpreted as decimal, regardless + of leading zeroes. + +PIPE_FAIL + By default, when a pipeline exits the exit status recorded by the + shell and returned by the shell variable $? reflects that of the + rightmost element of a pipeline. If this option is set, the exit + status instead reflects the status of the rightmost element of the + pipeline that was non-zero, or zero if all elements exited with + zero status. + +SOURCE_TRACE + If set, zsh will print an informational message announcing the + name of each file it loads. The format of the output is similar + to that for the XTRACE option, with the message <sourcetrace>. A + file may be loaded by the shell itself when it starts up and shuts + down (Startup/Shutdown Files) or by the use of the `source' and + `dot' builtin commands. + +TYPESET_SILENT + If this is unset, executing any of the `typeset' family of + commands with no options and a list of parameters that have no + values to be assigned but already exist will display the value of + the parameter. If the option is set, they will only be shown when + parameters are selected with the `-m' option. The option `-p' is + available whether or not the option is set. + +VERBOSE (-v, ksh: -v) + Print shell input lines as they are read. + +XTRACE (-x, ksh: -x) + Print commands and their arguments as they are executed. The + output is preceded by the value of $PS4, formatted as described in + *Note Prompt Expansion::. + + + +16.2.10 Shell Emulation +----------------------- + + +APPEND_CREATE <K> <S> + This option only applies when NO_CLOBBER (-C) is in effect. + + If this option is not set, the shell will report an error when a + append redirection (>>) is used on a file that does not already + exists (the traditional zsh behaviour of NO_CLOBBER). If the + option is set, no error is reported (POSIX behaviour). + +BASH_REMATCH + When set, matches performed with the =~ operator will set the + BASH_REMATCH array variable, instead of the default MATCH and + match variables. The first element of the BASH_REMATCH array will + contain the entire matched text and subsequent elements will + contain extracted substrings. This option makes more sense when + KSH_ARRAYS is also set, so that the entire matched portion is + stored at index 0 and the first substring is at index 1. Without + this option, the MATCH variable contains the entire matched text + and the match array variable contains substrings. + +BSD_ECHO <S> + Make the echo builtin compatible with the BSD man page echo(1) + command. This disables backslashed escape sequences in echo + strings unless the -e option is specified. + +CONTINUE_ON_ERROR + If a fatal error is encountered (see *Note Errors::), and the code + is running in a script, the shell will resume execution at the + next statement in the script at the top level, in other words + outside all functions or shell constructs such as loops and + conditions. This mimics the behaviour of interactive shells, + where the shell returns to the line editor to read a new command; + it was the normal behaviour in versions of zsh before 5.0.1. + +CSH_JUNKIE_HISTORY <C> + A history reference without an event specifier will always refer + to the previous command. Without this option, such a history + reference refers to the same event as the previous history + reference on the current command line, defaulting to the previous + command. + +CSH_JUNKIE_LOOPS <C> + Allow loop bodies to take the form `LIST; end' instead of `do + LIST; done'. + +CSH_JUNKIE_QUOTES <C> + Changes the rules for single- and double-quoted text to match that + of `csh'. These require that embedded newlines be preceded by a + backslash; unescaped newlines will cause an error message. In + double-quoted strings, it is made impossible to escape `$', ``' or + `"' (and `\' itself no longer needs escaping). Command + substitutions are only expanded once, and cannot be nested. + +CSH_NULLCMD <C> + Do not use the values of NULLCMD and READNULLCMD when running + redirections with no command. This make such redirections fail + (see *Note Redirection::). + +KSH_ARRAYS <K> <S> + Emulate `ksh' array handling as closely as possible. If this + option is set, array elements are numbered from zero, an array + parameter without subscript refers to the first element instead of + the whole array, and braces are required to delimit a subscript + (`${path[2]}' rather than just `$path[2]') or to apply modifiers + to any parameter (`${PWD:h}' rather than `$PWD:h'). + +KSH_AUTOLOAD <K> <S> + Emulate `ksh' function autoloading. This means that when a + function is autoloaded, the corresponding file is merely executed, + and must define the function itself. (By default, the function is + defined to the contents of the file. However, the most common + `ksh'-style case - of the file containing only a simple definition + of the function - is always handled in the `ksh'-compatible + manner.) + +KSH_OPTION_PRINT <K> + Alters the way options settings are printed: instead of separate + lists of set and unset options, all options are shown, marked `on' + if they are in the non-default state, `off' otherwise. + +KSH_TYPESET + This option is now obsolete: a better appropximation to the + behaviour of other shells is obtained with the reserved word + interface to declare, export, float, integer, local, readonly and + typeset. Note that the option is only applied when the reserved + word interface is _not_ in use. + + Alters the way arguments to the typeset family of commands, + including declare, export, float, integer, local and readonly, are + processed. Without this option, zsh will perform normal word + splitting after command and parameter expansion in arguments of an + assignment; with it, word splitting does not take place in those + cases. + +KSH_ZERO_SUBSCRIPT + Treat use of a subscript of value zero in array or string + expressions as a reference to the first element, i.e. the element + that usually has the subscript 1. Ignored if KSH_ARRAYS is also + set. + + If neither this option nor KSH_ARRAYS is set, accesses to an + element of an array or string with subscript zero return an empty + element or string, while attempts to set element zero of an array + or string are treated as an error. However, attempts to set an + otherwise valid subscript range that includes zero will succeed. + For example, if KSH_ZERO_SUBSCRIPT is not set, + + + array[0]=(element) + + is an error, while + + + array[0,1]=(element) + + is not and will replace the first element of the array. + + This option is for compatibility with older versions of the shell + and is not recommended in new code. + +POSIX_ALIASES <K> <S> + When this option is set, reserved words are not candidates for + alias expansion: it is still possible to declare any of them as + an alias, but the alias will never be expanded. Reserved words + are described in *Note Reserved Words::. + + Alias expansion takes place while text is being read; hence when + this option is set it does not take effect until the end of any + function or other piece of shell code parsed as one unit. Note + this may cause differences from other shells even when the option + is in effect. For example, when running a command with `zsh -c', + or even `zsh -o posixaliases -c', the entire command argument is + parsed as one unit, so aliases defined within the argument are not + available even in later lines. If in doubt, avoid use of aliases + in non-interactive code. + +POSIX_ARGZERO + This option may be used to temporarily disable FUNCTION_ARGZERO and + thereby restore the value of $0 to the name used to invoke the + shell (or as set by the -c command line option). For + compatibility with previous versions of the shell, emulations use + NO_FUNCTION_ARGZERO instead of POSIX_ARGZERO, which may result in + unexpected scoping of $0 if the emulation mode is changed inside a + function or script. To avoid this, explicitly enable + POSIX_ARGZERO in the emulate command: + + + emulate sh -o POSIX_ARGZERO + + Note that NO_POSIX_ARGZERO has no effect unless FUNCTION_ARGZERO + was already enabled upon entry to the function or script. + +POSIX_BUILTINS <K> <S> + When this option is set the command builtin can be used to execute + shell builtin commands. Parameter assignments specified before + shell functions and special builtins are kept after the command + completes unless the special builtin is prefixed with the command + builtin. Special builtins are ., :, break, continue, declare, + eval, exit, export, integer, local, readonly, return, set, shift, + source, times, trap and unset. + + In addition, various error conditions associated with the above + builtins or exec cause a non-interactive shell to exit and an + interactive shell to return to its top-level processing. + + Furthermore, functions and shell builtins are not executed after + an exec prefix; the command to be executed must be an external + command found in the path. + + Furthermore, the getopts builtin behaves in a POSIX-compatible + fashion in that the associated variable OPTIND is not made local + to functions. + + Moreover, the warning and special exit code from [[ -o + NON_EXISTENT_OPTION ]] are suppressed. + +POSIX_IDENTIFIERS <K> <S> + When this option is set, only the ASCII characters a to z, A to Z, + 0 to 9 and _ may be used in identifiers (names of shell parameters + and modules). + + In addition, setting this option limits the effect of parameter + substitution with no braces, so that the expression $# is treated + as the parameter $# even if followed by a valid parameter name. + When it is unset, zsh allows expressions of the form $#NAME to + refer to the length of $NAME, even for special variables, for + example in expressions such as $#- and $#*. + + Another difference is that with the option set assignment to an + unset variable in arithmetic context causes the variable to be + created as a scalar rather than a numeric type. So after `unset + t; (( t = 3 ))'. without POSIX_IDENTIFIERS set t has integer type, + while with it set it has scalar type. + + When the option is unset and multibyte character support is + enabled (i.e. it is compiled in and the option MULTIBYTE is set), + then additionally any alphanumeric characters in the local + character set may be used in identifiers. Note that scripts and + functions written with this feature are not portable, and also + that both options must be set before the script or function is + parsed; setting them during execution is not sufficient as the + syntax VARIABLE=VALUE has already been parsed as a command rather + than an assignment. + + If multibyte character support is not compiled into the shell this + option is ignored; all octets with the top bit set may be used in + identifiers. This is non-standard but is the traditional zsh + behaviour. + +POSIX_STRINGS <K> <S> + This option affects processing of quoted strings. Currently it + only affects the behaviour of null characters, i.e. character 0 in + the portable character set corresponding to US ASCII. + + When this option is not set, null characters embedded within + strings of the form $'...' are treated as ordinary characters. The + entire string is maintained within the shell and output to files + where necessary, although owing to restrictions of the library + interface the string is truncated at the null character in file + names, environment variables, or in arguments to external programs. + + When this option is set, the $'...' expression is truncated at the + null character. Note that remaining parts of the same string + beyond the termination of the quotes are not truncated. + + For example, the command line argument a$'b\0c'd is treated with + the option off as the characters a, b, null, c, d, and with the + option on as the characters a, b, d. + +POSIX_TRAPS <K> <S> + When this option is set, the usual zsh behaviour of executing + traps for EXIT on exit from shell functions is suppressed. In + that case, manipulating EXIT traps always alters the global trap + for exiting the shell; the LOCAL_TRAPS option is ignored for the + EXIT trap. Furthermore, a return statement executed in a trap + with no argument passes back from the function the value from the + surrounding context, not from code executed within the trap. + +SH_FILE_EXPANSION <K> <S> + Perform filename expansion (e.g., ~ expansion) _before_ parameter + expansion, command substitution, arithmetic expansion and brace + expansion. If this option is unset, it is performed _after_ brace + expansion, so things like `~$USERNAME' and `~{pfalstad,rc}' will + work. + +SH_NULLCMD <K> <S> + Do not use the values of NULLCMD and READNULLCMD when doing + redirections, use `:' instead (see *Note Redirection::). + +SH_OPTION_LETTERS <K> <S> + If this option is set the shell tries to interpret single letter + options (which are used with set and setopt) like `ksh' does. + This also affects the value of the - special parameter. + +SH_WORD_SPLIT (-y) <K> <S> + Causes field splitting to be performed on unquoted parameter + expansions. Note that this option has nothing to do with word + splitting. (See *Note Parameter Expansion::.) + +TRAPS_ASYNC + While waiting for a program to exit, handle signals and run traps + immediately. Otherwise the trap is run after a child process has + exited. Note this does not affect the point at which traps are + run for any case other than when the shell is waiting for a child + process. + + + +16.2.11 Shell State +------------------- + + +INTERACTIVE (-i, ksh: -i) + This is an interactive shell. This option is set upon + initialisation if the standard input is a tty and commands are + being read from standard input. (See the discussion of + SHIN_STDIN.) This heuristic may be overridden by specifying a + state for this option on the command line. The value of this + option can only be changed via flags supplied at invocation of the + shell. It cannot be changed once zsh is running. + +LOGIN (-l, ksh: -l) + This is a login shell. If this option is not explicitly set, the + shell becomes a login shell if the first character of the argv[0] + passed to the shell is a `-'. + +PRIVILEGED (-p, ksh: -p) + Turn on privileged mode. Typically this is used when script is to + be run with elevated privileges. This should be done as follows + directly with the -p option to zsh so that it takes effect during + startup. + + + #!/bin/zsh -p + + The option is enabled automatically on startup if the effective + user (group) ID is not equal to the real user (group) ID. In this + case, turning the option off causes the effective user and group + IDs to be set to the real user and group IDs. Be aware that if + that fails the shell may be running with different IDs than was + intended so a script should check for failure and act accordingly, + for example: + + + unsetopt privileged || exit + + The PRIVILEGED option disables sourcing user startup files. If + zsh is invoked as `sh' or `ksh' with this option set, + /etc/suid_profile is sourced (after /etc/profile on interactive + shells). Sourcing ~/.profile is disabled and the contents of the + ENV variable is ignored. This option cannot be changed using the + -m option of setopt and unsetopt, and changing it inside a + function always changes it globally regardless of the LOCAL_OPTIONS + option. + +RESTRICTED (-r) + Enables restricted mode. This option cannot be changed using + unsetopt, and setting it inside a function always changes it + globally regardless of the LOCAL_OPTIONS option. See *Note + Restricted Shell::. + +SHIN_STDIN (-s, ksh: -s) + Commands are being read from the standard input. Commands are + read from standard input if no command is specified with -c and no + file of commands is specified. If SHIN_STDIN is set explicitly on + the command line, any argument that would otherwise have been + taken as a file to run will instead be treated as a normal + positional parameter. Note that setting or unsetting this option + on the command line does not necessarily affect the state the + option will have while the shell is running - that is purely an + indicator of whether or not commands are _actually_ being read + from standard input. The value of this option can only be changed + via flags supplied at invocation of the shell. It cannot be + changed once zsh is running. + +SINGLE_COMMAND (-t, ksh: -t) + If the shell is reading from standard input, it exits after a + single command has been executed. This also makes the shell + non-interactive, unless the INTERACTIVE option is explicitly set + on the command line. The value of this option can only be changed + via flags supplied at invocation of the shell. It cannot be + changed once zsh is running. + + + +16.2.12 Zle +----------- + + +BEEP (+B) <D> + Beep on error in ZLE. + +COMBINING_CHARS + Assume that the terminal displays combining characters correctly. + Specifically, if a base alphanumeric character is followed by one + or more zero-width punctuation characters, assume that the + zero-width characters will be displayed as modifications to the + base character within the same width. Not all terminals handle + this. If this option is not set, zero-width characters are + displayed separately with special mark-up. + + If this option is set, the pattern test [[:WORD:]] matches a + zero-width punctuation character on the assumption that it will be + used as part of a word in combination with a word character. + Otherwise the base shell does not handle combining characters + specially. + +EMACS + If ZLE is loaded, turning on this option has the equivalent effect + of `bindkey -e'. In addition, the VI option is unset. Turning it + off has no effect. The option setting is not guaranteed to + reflect the current keymap. This option is provided for + compatibility; bindkey is the recommended interface. + +OVERSTRIKE + Start up the line editor in overstrike mode. + +SINGLE_LINE_ZLE (-M) <K> + Use single-line command line editing instead of multi-line. + + Note that although this is on by default in ksh emulation it only + provides superficial compatibility with the ksh line editor and + reduces the effectiveness of the zsh line editor. As it has no + effect on shell syntax, many users may wish to disable this option + when using ksh emulation interactively. + +VI + If ZLE is loaded, turning on this option has the equivalent effect + of `bindkey -v'. In addition, the EMACS option is unset. Turning + it off has no effect. The option setting is not guaranteed to + reflect the current keymap. This option is provided for + compatibility; bindkey is the recommended interface. + +ZLE (-Z) + Use the zsh line editor. Set by default in interactive shells + connected to a terminal. + + + + +File: zsh.info, Node: Option Aliases, Next: Single Letter Options, Prev: Description of Options, Up: Options + +16.3 Option Aliases +=================== + +Some options have alternative names. These aliases are never used for +output, but can be used just like normal option names when specifying +options to the shell. + + +BRACE_EXPAND + _NO__IGNORE_BRACES (ksh and bash compatibility) + +DOT_GLOB + GLOB_DOTS (bash compatibility) + +HASH_ALL + HASH_CMDS (bash compatibility) + +HIST_APPEND + APPEND_HISTORY (bash compatibility) + +HIST_EXPAND + BANG_HIST (bash compatibility) + +LOG + _NO__HIST_NO_FUNCTIONS (ksh compatibility) + +MAIL_WARN + MAIL_WARNING (bash compatibility) + +ONE_CMD + SINGLE_COMMAND (bash compatibility) + +PHYSICAL + CHASE_LINKS (ksh and bash compatibility) + +PROMPT_VARS + PROMPT_SUBST (bash compatibility) + +STDIN + SHIN_STDIN (ksh compatibility) + +TRACK_ALL + HASH_CMDS (ksh compatibility) + + + +File: zsh.info, Node: Single Letter Options, Prev: Option Aliases, Up: Options + +16.4 Single Letter Options +========================== + + + +16.4.1 Default set +------------------ + + +-0 + CORRECT + +-1 + PRINT_EXIT_VALUE + +-2 + _NO__BAD_PATTERN + +-3 + _NO__NOMATCH + +-4 + GLOB_DOTS + +-5 + NOTIFY + +-6 + BG_NICE + +-7 + IGNORE_EOF + +-8 + MARK_DIRS + +-9 + AUTO_LIST + +-B + _NO__BEEP + +-C + _NO__CLOBBER + +-D + PUSHD_TO_HOME + +-E + PUSHD_SILENT + +-F + _NO__GLOB + +-G + NULL_GLOB + +-H + RM_STAR_SILENT + +-I + IGNORE_BRACES + +-J + AUTO_CD + +-K + _NO__BANG_HIST + +-L + SUN_KEYBOARD_HACK + +-M + SINGLE_LINE_ZLE + +-N + AUTO_PUSHD + +-O + CORRECT_ALL + +-P + RC_EXPAND_PARAM + +-Q + PATH_DIRS + +-R + LONG_LIST_JOBS + +-S + REC_EXACT + +-T + CDABLE_VARS + +-U + MAIL_WARNING + +-V + _NO__PROMPT_CR + +-W + AUTO_RESUME + +-X + LIST_TYPES + +-Y + MENU_COMPLETE + +-Z + ZLE + +-a + ALL_EXPORT + +-e + ERR_EXIT + +-f + _NO__RCS + +-g + HIST_IGNORE_SPACE + +-h + HIST_IGNORE_DUPS + +-i + INTERACTIVE + +-k + INTERACTIVE_COMMENTS + +-l + LOGIN + +-m + MONITOR + +-n + _NO__EXEC + +-p + PRIVILEGED + +-r + RESTRICTED + +-s + SHIN_STDIN + +-t + SINGLE_COMMAND + +-u + _NO__UNSET + +-v + VERBOSE + +-w + CHASE_LINKS + +-x + XTRACE + +-y + SH_WORD_SPLIT + +16.4.2 sh/ksh emulation set +--------------------------- + + +-C + _NO__CLOBBER + +-T + TRAPS_ASYNC + +-X + MARK_DIRS + +-a + ALL_EXPORT + +-b + NOTIFY + +-e + ERR_EXIT + +-f + _NO__GLOB + +-i + INTERACTIVE + +-l + LOGIN + +-m + MONITOR + +-n + _NO__EXEC + +-p + PRIVILEGED + +-r + RESTRICTED + +-s + SHIN_STDIN + +-t + SINGLE_COMMAND + +-u + _NO__UNSET + +-v + VERBOSE + +-x + XTRACE + +16.4.3 Also note +---------------- + + +-A + Used by set for setting arrays + +-b + Used on the command line to specify end of option processing + +-c + Used on the command line to specify a single command + +-m + Used by setopt for pattern-matching option setting + +-o + Used in all places to allow use of long option names + +-s + Used by set to sort positional parameters + + +File: zsh.info, Node: Shell Builtin Commands, Next: Zsh Line Editor, Prev: Options, Up: Top + +17 Shell Builtin Commands +************************* + +Some shell builtin commands take options as described in individual +entries; these are often referred to in the list below as `flags' to +avoid confusion with shell options, which may also have an effect on the +behaviour of builtin commands. In this introductory section, `option' +always has the meaning of an option to a command that should be +familiar to most command line users. + +Typically, options are single letters preceded by a hyphen (-). +Options that take an argument accept it either immediately following the +option letter or after white space, for example `print -C3 {1..9}' or +`print -C 3 {1..9}' are equivalent. Arguments to options are not the +same as arguments to the command; the documentation indicates which is +which. Options that do not take an argument may be combined in a single +word, for example `print -rca - *' and `print -r -c -a - *' are +equivalent. + +Some shell builtin commands also take options that begin with `+' +instead of `-'. The list below makes clear which commands these are. + +Options (together with their individual arguments, if any) must appear +in a group before any non-option arguments; once the first non-option +argument has been found, option processing is terminated. + +All builtin commands other than `echo' and precommand modifiers, even +those that have no options, can be given the argument `--' to terminate +option processing. This indicates that the following words are +non-option arguments, but is otherwise ignored. This is useful in +cases where arguments to the command may begin with `-'. For +historical reasons, most builtin commands (including `echo') also +recognize a single `-' in a separate word for this purpose; note that +this is less standard and use of `--' is recommended. + + +- SIMPLE COMMAND + See *Note Precommand Modifiers::. + +. FILE [ ARG ... ] + Read commands from FILE and execute them in the current shell + environment. + + If FILE does not contain a slash, or if PATH_DIRS is set, the + shell looks in the components of $path to find the directory + containing FILE. Files in the current directory are not read + unless `.' appears somewhere in $path. If a file named `FILE.zwc' + is found, is newer than FILE, and is the compiled form (created + with the zcompile builtin) of FILE, then commands are read from + that file instead of FILE. + + If any arguments ARG are given, they become the positional + parameters; the old positional parameters are restored when the + FILE is done executing. However, if no arguments are given, the + positional parameters remain those of the calling context, and no + restoring is done. + + If FILE was not found the return status is 127; if FILE was found + but contained a syntax error the return status is 126; else the + return status is the exit status of the last command executed. + +: [ ARG ... ] + This command does nothing, although normal argument expansions is + performed which may have effects on shell parameters. A zero exit + status is returned. + +alias [ {+|-}gmrsL ] [ NAME[=VALUE] ... ] + For each NAME with a corresponding VALUE, define an alias with + that value. A trailing space in VALUE causes the next word to be + checked for alias expansion. If the -g flag is present, define a + global alias; global aliases are expanded even if they do not + occur in command position. + + If the -s flag is present, define a suffix alias: if the command + word on a command line is in the form `TEXT.NAME', where TEXT is + any non-empty string, it is replaced by the text `VALUE + TEXT.NAME'. Note that NAME is treated as a literal string, not a + pattern. A trailing space in VALUE is not special in this case. + For example, + + + alias -s ps='gv --' + + will cause the command `*.ps' to be expanded to `gv - *.ps'. As + alias expansion is carried out earlier than globbing, the `*.ps' + will then be expanded. Suffix aliases constitute a different name + space from other aliases (so in the above example it is still + possible to create an alias for the command ps) and the two sets + are never listed together. + + For each NAME with no VALUE, print the value of NAME, if any. + With no arguments, print all currently defined aliases other than + suffix aliases. If the -m flag is given the arguments are taken + as patterns (they should be quoted to preserve them from being + interpreted as glob patterns), and the aliases matching these + patterns are printed. When printing aliases and one of the -g, -r + or -s flags is present, restrict the printing to global, regular + or suffix aliases, respectively; a regular alias is one which is + neither a global nor a suffix alias. Using `+' instead of `-', + or ending the option list with a single `+', prevents the values + of the aliases from being printed. + + If the -L flag is present, then print each alias in a manner + suitable for putting in a startup script. The exit status is + nonzero if a NAME (with no VALUE) is given for which no alias has + been defined. + + For more on aliases, include common problems, see *Note Aliasing::. + +autoload [ {+|-}RTUXdkmrtWz ] [ -w ] [ NAME ... ] + See the section `Autoloading Functions' in *Note Functions:: for + full details. The fpath parameter will be searched to find the + function definition when the function is first referenced. + + If NAME consists of an absolute path, the function is defined to + load from the file given (searching as usual for dump files in the + given location). The name of the function is the basename + (non-directory part) of the file. It is normally an error if the + function is not found in the given location; however, if the + option -d is given, searching for the function defaults to $fpath. + If a function is loaded by absolute path, any functions loaded + from it that are marked for autoload without an absolute path have + the load path of the parent function temporarily prepended to + $fpath. + + If the option -r or -R is given, the function is searched for + immediately and the location is recorded internally for use when + the function is executed; a relative path is expanded using the + value of $PWD. This protects against a change to $fpath after the + call to autoload. With -r, if the function is not found, it is + silently left unresolved until execution; with -R, an error message + is printed and command processing aborted immediately the search + fails, i.e. at the autoload command rather than at function + execution.. + + The flag -X may be used only inside a shell function. It causes + the calling function to be marked for autoloading and then + immediately loaded and executed, with the current array of + positional parameters as arguments. This replaces the previous + definition of the function. If no function definition is found, + an error is printed and the function remains undefined and marked + for autoloading. If an argument is given, it is used as a + directory (i.e. it does not include the name of the function) in + which the function is to be found; this may be combined with the + -d option to allow the function search to default to $fpath if it + is not in the given location. + + The flag +X attempts to load each NAME as an autoloaded function, + but does _not_ execute it. The exit status is zero (success) if + the function was not previously defined _and_ a definition for it + was found. This does _not_ replace any existing definition of the + function. The exit status is nonzero (failure) if the function + was already defined or when no definition was found. In the + latter case the function remains undefined and marked for + autoloading. If ksh-style autoloading is enabled, the function + created will contain the contents of the file plus a call to the + function itself appended to it, thus giving normal ksh autoloading + behaviour on the first call to the function. If the -m flag is + also given each NAME is treated as a pattern and all functions + already marked for autoload that match the pattern are loaded. + + With the -t flag, turn on execution tracing; with -T, turn on + execution tracing only for the current function, turning it off on + entry to any called functions that do not also have tracing + enabled. + + With the -U flag, alias expansion is suppressed when the function + is loaded. + + With the -w flag, the NAMEs are taken as names of files compiled + with the zcompile builtin, and all functions defined in them are + marked for autoloading. + + The flags -z and -k mark the function to be autoloaded using the + zsh or ksh style, as if the option KSH_AUTOLOAD were unset or were + set, respectively. The flags override the setting of the option + at the time the function is loaded. + + Note that the autoload command makes no attempt to ensure the + shell options set during the loading or execution of the file have + any particular value. For this, the emulate command can be used: + + + emulate zsh -c 'autoload -Uz FUNC' + + arranges that when FUNC is loaded the shell is in native zsh + emulation, and this emulation is also applied when FUNC is run. + + Some of the functions of autoload are also provided by functions + -u or functions -U, but autoload is a more comprehensive interface. + +bg [ JOB ... ] +JOB ... & + Put each specified JOB in the background, or the current job if + none is specified. + +bindkey + See *Note Zle Builtins::. + +break [ N ] + Exit from an enclosing for, while, until, select or repeat loop. + If an arithmetic expression N is specified, then break N levels + instead of just one. + +builtin NAME [ ARGS ... ] + Executes the builtin NAME, with the given ARGS. + +bye + Same as exit. + +cap + See *Note The zsh/cap Module::. + +cd [ -qsLP ] [ ARG ] +cd [ -qsLP ] OLD NEW +cd [ -qsLP ] {+|-}N + Change the current directory. In the first form, change the + current directory to ARG, or to the value of $HOME if ARG is not + specified. If ARG is `-', change to the previous directory. + + Otherwise, if ARG begins with a slash, attempt to change to the + directory given by ARG. + + If ARG does not begin with a slash, the behaviour depends on + whether the current directory `.' occurs in the list of + directories contained in the shell parameter cdpath. If it does + not, first attempt to change to the directory ARG under the + current directory, and if that fails but cdpath is set and + contains at least one element attempt to change to the directory + ARG under each component of cdpath in turn until successful. If + `.' occurs in cdpath, then cdpath is searched strictly in order so + that `.' is only tried at the appropriate point. + + The order of testing cdpath is modified if the option POSIX_CD is + set, as described in the documentation for the option. + + If no directory is found, the option CDABLE_VARS is set, and a + parameter named ARG exists whose value begins with a slash, treat + its value as the directory. In that case, the parameter is added + to the named directory hash table. + + The second form of cd substitutes the string NEW for the string + OLD in the name of the current directory, and tries to change to + this new directory. + + The third form of cd extracts an entry from the directory stack, + and changes to that directory. An argument of the form `+N' + identifies a stack entry by counting from the left of the list + shown by the dirs command, starting with zero. An argument of the + form `-N' counts from the right. If the PUSHD_MINUS option is + set, the meanings of `+' and `-' in this context are swapped. If + the POSIX_CD option is set, this form of cd is not recognised and + will be interpreted as the first form. + + If the -q (quiet) option is specified, the hook function chpwd and + the functions in the array chpwd_functions are not called. This + is useful for calls to cd that do not change the environment seen + by an interactive user. + + If the -s option is specified, cd refuses to change the current + directory if the given pathname contains symlinks. If the -P + option is given or the CHASE_LINKS option is set, symbolic links + are resolved to their true values. If the -L option is given + symbolic links are retained in the directory (and not resolved) + regardless of the state of the CHASE_LINKS option. + +chdir + Same as cd. + +clone + See *Note The zsh/clone Module::. + +command [ -pvV ] SIMPLE COMMAND + The simple command argument is taken as an external command + instead of a function or builtin and is executed. If the + POSIX_BUILTINS option is set, builtins will also be executed but + certain special properties of them are suppressed. The -p flag + causes a default path to be searched instead of that in $path. + With the -v flag, command is similar to whence and with -V, it is + equivalent to whence -v. + + See also *Note Precommand Modifiers::. + +comparguments + See *Note The zsh/computil Module::. + +compcall + See *Note The zsh/compctl Module::. + +compctl + See *Note The zsh/compctl Module::. + +compdescribe + See *Note The zsh/computil Module::. + +compfiles + See *Note The zsh/computil Module::. + +compgroups + See *Note The zsh/computil Module::. + +compquote + See *Note The zsh/computil Module::. + +comptags + See *Note The zsh/computil Module::. + +comptry + See *Note The zsh/computil Module::. + +compvalues + See *Note The zsh/computil Module::. + +continue [ N ] + Resume the next iteration of the enclosing for, while, until, + select or repeat loop. If an arithmetic expression N is specified, + break out of N-1 loops and resume at the Nth enclosing loop. + +declare + Same as typeset. + +dirs [ -c ] [ ARG ... ] +dirs [ -lpv ] + With no arguments, print the contents of the directory stack. + Directories are added to this stack with the pushd command, and + removed with the cd or popd commands. If arguments are specified, + load them onto the directory stack, replacing anything that was + there, and push the current directory onto the stack. + + + -c + clear the directory stack. + + -l + print directory names in full instead of using of using ~ + expressions (*Note Filename Expansion::). + + -p + print directory entries one per line. + + -v + number the directories in the stack when printing. + + + +disable [ -afmprs ] NAME ... + Temporarily disable the NAMEd hash table elements or patterns. + The default is to disable builtin commands. This allows you to + use an external command with the same name as a builtin command. + The -a option causes disable to act on regular or global aliases. + The -s option causes disable to act on suffix aliases. The -f + option causes disable to act on shell functions. The -r options + causes disable to act on reserved words. Without arguments all + disabled hash table elements from the corresponding hash table are + printed. With the -m flag the arguments are taken as patterns + (which should be quoted to prevent them from undergoing filename + expansion), and all hash table elements from the corresponding + hash table matching these patterns are disabled. Disabled objects + can be enabled with the enable command. + + With the option -p, NAME ... refer to elements of the shell's + pattern syntax as described in *Note Filename Generation::. + Certain elements can be disabled separately, as given below. + + Note that patterns not allowed by the current settings for the + options EXTENDED_GLOB, KSH_GLOB and SH_GLOB are never enabled, + regardless of the setting here. For example, if EXTENDED_GLOB is + not active, the pattern ^ is ineffective even if `disable -p "^"' + has not been issued. The list below indicates any option settings + that restrict the use of the pattern. It should be noted that + setting SH_GLOB has a wider effect than merely disabling patterns + as certain expressions, in particular those involving parentheses, + are parsed differently. + + The following patterns may be disabled; all the strings need + quoting on the command line to prevent them from being interpreted + immediately as patterns and the patterns are shown below in single + quotes as a reminder. + + + '?' + The pattern character ? wherever it occurs, including when + preceding a parenthesis with KSH_GLOB. + + '*' + The pattern character * wherever it occurs, including + recursive globbing and when preceding a parenthesis with + KSH_GLOB. + + '[' + Character classes. + + '<' (NO_SH_GLOB) + Numeric ranges. + + '|' (NO_SH_GLOB) + Alternation in grouped patterns, case statements, or KSH_GLOB + parenthesised expressions. + + '(' (NO_SH_GLOB) + Grouping using single parentheses. Disabling this does not + disable the use of parentheses for KSH_GLOB where they are + introduced by a special character, nor for glob qualifiers + (use `setopt NO_BARE_GLOB_QUAL' to disable glob qualifiers + that use parentheses only). + + '~' (EXTENDED_GLOB) + Exclusion in the form A~B. + + '^' (EXTENDED_GLOB) + Exclusion in the form A^B. + + '#' (EXTENDED_GLOB) + The pattern character # wherever it occurs, both for + repetition of a previous pattern and for indicating globbing + flags. + + '?(' (KSH_GLOB) + The grouping form ?(...). Note this is also disabled if '?' + is disabled. + + '*(' (KSH_GLOB) + The grouping form *(...). Note this is also disabled if '*' + is disabled. + + '+(' (KSH_GLOB) + The grouping form +(...). + + '!(' (KSH_GLOB) + The grouping form !(...). + + '@(' (KSH_GLOB) + The grouping form @(...). + + +disown [ JOB ... ] +JOB ... &| +JOB ... &! + Remove the specified JOBs from the job table; the shell will no + longer report their status, and will not complain if you try to + exit an interactive shell with them running or stopped. If no JOB + is specified, disown the current job. + + If the JOBs are currently stopped and the AUTO_CONTINUE option is + not set, a warning is printed containing information about how to + make them running after they have been disowned. If one of the + latter two forms is used, the JOBs will automatically be made + running, independent of the setting of the AUTO_CONTINUE option. + +echo [ -neE ] [ ARG ... ] + Write each ARG on the standard output, with a space separating + each one. If the -n flag is not present, print a newline at the + end. echo recognizes the following escape sequences: + + + \a + bell character + + \b + backspace + + \c + suppress subsequent characters and final newline + + \e + escape + + \f + form feed + + \n + linefeed (newline) + + \r + carriage return + + \t + horizontal tab + + \v + vertical tab + + \\ + backslash + + \0NNN + character code in octal + + \xNN + character code in hexadecimal + + \uNNNN + unicode character code in hexadecimal + + \UNNNNNNNN + unicode character code in hexadecimal + + The -E flag, or the BSD_ECHO option, can be used to disable these + escape sequences. In the latter case, -e flag can be used to + enable them. + + Note that for standards compliance a double dash does not terminate + option processing; instead, it is printed directly. However, a + single dash does terminate option processing, so the first dash, + possibly following options, is not printed, but everything + following it is printed as an argument. The single dash behaviour + is different from other shells. For a more portable way of + printing text, see printf, and for a more controllable way of + printing text within zsh, see print. + +echotc + See *Note The zsh/termcap Module::. + +echoti + See *Note The zsh/terminfo Module::. + +emulate [ -lLR ] [ {zsh|sh|ksh|csh} [ FLAGS ... ] ] + Without any argument print current emulation mode. + + With single argument set up zsh options to emulate the specified + shell as much as possible. `csh' will never be fully emulated. + If the argument is not one of the shells listed above, zsh will be + used as a default; more precisely, the tests performed on the + argument are the same as those used to determine the emulation at + startup based on the shell name, see *Note Compatibility:: . In + addition to setting shell options, the command also restores the + pristine state of pattern enables, as if all patterns had been + enabled using enable -p. + + If the emulate command occurs inside a function that has been + marked for execution tracing with functions -t then the xtrace + option will be turned on regardless of emulation mode or other + options. Note that code executed inside the function by the ., + source, or eval commands is not considered to be running directly + from the function, hence does not provoke this behaviour. + + If the -R switch is given, all settable options are reset to their + default value corresponding to the specified emulation mode, + except for certain options describing the interactive environment; + otherwise, only those options likely to cause portability problems + in scripts and functions are altered. If the -L switch is given, + the options LOCAL_OPTIONS, LOCAL_PATTERNS and LOCAL_TRAPS will be + set as well, causing the effects of the emulate command and any + setopt, disable -p or enable -p, and trap commands to be local to + the immediately surrounding shell function, if any; normally these + options are turned off in all emulation modes except ksh. The -L + switch is mutually exclusive with the use of -c in FLAGS. + + If there is a single argument and the -l switch is given, the + options that would be set or unset (the latter indicated with the + prefix `no') are listed. -l can be combined with -L or -R and the + list will be modified in the appropriate way. Note the list does + not depend on the current setting of options, i.e. it includes all + options that may in principle change, not just those that would + actually change. + + The FLAGS may be any of the invocation-time flags described in + *Note Invocation::, except that `-o EMACS' and `-o VI' may not be + used. Flags such as `+r'/`+o RESTRICTED' may be prohibited in + some circumstances. + + If -c ARG appears in FLAGS, ARG is evaluated while the requested + emulation is temporarily in effect. In this case the emulation + mode and all options are restored to their previous values before + emulate returns. The -R switch may precede the name of the shell + to emulate; note this has a meaning distinct from including -R in + FLAGS. + + Use of -c enables `sticky' emulation mode for functions defined + within the evaluated expression: the emulation mode is associated + thereafter with the function so that whenever the function is + executed the emulation (respecting the -R switch, if present) and + all options are set (and pattern disables cleared) before entry to + the function, and the state is restored after exit. If the + function is called when the sticky emulation is already in effect, + either within an `emulate SHELL -c' expression or within another + function with the same sticky emulation, entry and exit from the + function do not cause options to be altered (except due to + standard processing such as the LOCAL_OPTIONS option). This also + applies to functions marked for autoload within the sticky + emulation; the appropriate set of options will be applied at the + point the function is loaded as well as when it is run. + + For example: + + + emulate sh -c 'fni() { setopt cshnullglob; } + fno() { fni; }' + fno + + The two functions fni and fno are defined with sticky sh + emulation. fno is then executed, causing options associated with + emulations to be set to their values in sh. fno then calls fni; + because fni is also marked for sticky sh emulation, no option + changes take place on entry to or exit from it. Hence the option + cshnullglob, turned off by sh emulation, will be turned on within + fni and remain on return to fno. On exit from fno, the emulation + mode and all options will be restored to the state they were in + before entry to the temporary emulation. + + The documentation above is typically sufficient for the intended + purpose of executing code designed for other shells in a suitable + environment. More detailed rules follow. + 1. + The sticky emulation environment provided by `emulate SHELL + -c' is identical to that provided by entry to a function + marked for sticky emulation as a consequence of being defined + in such an environment. Hence, for example, the sticky + emulation is inherited by subfunctions defined within + functions with sticky emulation. + + 2. + No change of options takes place on entry to or exit from + functions that are not marked for sticky emulation, other + than those that would normally take place, even if those + functions are called within sticky emulation. + + 3. + No special handling is provided for functions marked for + autoload nor for functions present in wordcode created by the + zcompile command. + + 4. + The presence or absence of the -R switch to emulate + corresponds to different sticky emulation modes, so for + example `emulate sh -c', `emulate -R sh -c' and `emulate csh + -c' are treated as three distinct sticky emulations. + + 5. + Difference in shell options supplied in addition to the basic + emulation also mean the sticky emulations are different, so + for example `emulate zsh -c' and `emulate zsh -o cbases -c' + are treated as distinct sticky emulations. + +enable [ -afmprs ] NAME ... + Enable the NAMEd hash table elements, presumably disabled earlier + with disable. The default is to enable builtin commands. The -a + option causes enable to act on regular or global aliases. The -s + option causes enable to act on suffix aliases. The -f option + causes enable to act on shell functions. The -r option causes + enable to act on reserved words. Without arguments all enabled + hash table elements from the corresponding hash table are printed. + With the -m flag the arguments are taken as patterns (should be + quoted) and all hash table elements from the corresponding hash + table matching these patterns are enabled. Enabled objects can be + disabled with the disable builtin command. + + enable -p reenables patterns disabled with disable -p. Note that + it does not override globbing options; for example, `enable -p + "~"' does not cause the pattern character ~ to be active unless + the EXTENDED_GLOB option is also set. To enable all possible + patterns (so that they may be individually disabled with disable + -p), use `setopt EXTENDED_GLOB KSH_GLOB NO_SH_GLOB'. + +eval [ ARG ... ] + Read the arguments as input to the shell and execute the resulting + command(s) in the current shell process. The return status is the + same as if the commands had been executed directly by the shell; + if there are no ARGS or they contain no commands (i.e. are an + empty string or whitespace) the return status is zero. + +exec [ -cl ] [ -a ARGV0 ] [ COMMAND [ ARG ... ] ] + Replace the current shell with COMMAND rather than forking. If + COMMAND is a shell builtin command or a shell function, the shell + executes it, and exits when the command is complete. + + With -c clear the environment; with -l prepend - to the argv[0] + string of the command executed (to simulate a login shell); with + -a ARGV0 set the argv[0] string of the command executed. See + *Note Precommand Modifiers::. + + If the option POSIX_BUILTINS is set, COMMAND is never interpreted + as a shell builtin command or shell function. This means further + precommand modifiers such as builtin and noglob are also not + interpreted within the shell. Hence COMMAND is always found by + searching the command path. + + If COMMAND is omitted but any redirections are specified, then the + redirections will take effect in the current shell. + +exit [ N ] + Exit the shell with the exit status specified by an arithmetic + expression N; if none is specified, use the exit status from the + last command executed. An EOF condition will also cause the shell + to exit, unless the IGNORE_EOF option is set. + + See notes at the end of *Note Jobs & Signals:: for some possibly + unexpected interactions of the exit command with jobs. + +export [ NAME[=VALUE] ... ] + The specified NAMEs are marked for automatic export to the + environment of subsequently executed commands. Equivalent to + typeset -gx. If a parameter specified does not already exist, it + is created in the global scope. + +false [ ARG ... ] + Do nothing and return an exit status of 1. + +fc [ -e ENAME ] [ -LI ] [ -m MATCH ] [ OLD=NEW ... ] [ FIRST [ LAST ] ] +fc -l [ -LI ] [ -nrdfEiD ] [ -t TIMEFMT ] [ -m MATCH ] + [ OLD=NEW ... ] [ FIRST [ LAST ] ] +fc -p [ -a ] [ FILENAME [ HISTSIZE [ SAVEHISTSIZE ] ] ] +fc -P +fc -ARWI [ FILENAME ] + The fc command controls the interactive history mechanism. Note + that reading and writing of history options is only performed if + the shell is interactive. Usually this is detected automatically, + but it can be forced by setting the interactive option when + starting the shell. + + The first two forms of this command select a range of events from + FIRST to LAST from the history list. The arguments FIRST and LAST + may be specified as a number or as a string. A negative number is + used as an offset to the current history event number. A string + specifies the most recent event beginning with the given string. + All substitutions OLD=NEW, if any, are then performed on the text + of the events. + + In addition to the number range, + -I + restricts to only internal events (not from $HISTFILE) + + -L + restricts to only local events (not from other shells, see + SHARE_HISTORY in *Note Description of Options:: - note that + $HISTFILE is considered local when read at startup) + + -m + takes the first argument as a pattern (should be quoted) and + only the history events matching this pattern are considered + + If FIRST is not specified, it will be set to -1 (the most recent + event), or to -16 if the -l flag is given. If LAST is not + specified, it will be set to FIRST, or to -1 if the -l flag is + given. However, if the current event has added entries to the + history with `print -s' or `fc -R', then the default LAST for -l + includes all new history entries since the current event began. + + When the -l flag is given, the resulting events are listed on + standard output. Otherwise the editor program specified by -e + ENAME is invoked on a file containing these history events. If -e + is not given, the value of the parameter FCEDIT is used; if that + is not set the value of the parameter EDITOR is used; if that is + not set a builtin default, usually `vi' is used. If ENAME is `-', + no editor is invoked. When editing is complete, the edited + command is executed. + + The flag -r reverses the order of the events and the flag -n + suppresses event numbers when listing. + + Also when listing, + -d + prints timestamps for each event + + -f + prints full time-date stamps in the US `MM/DD/YY HH:MM' format + + -E + prints full time-date stamps in the European `DD.MM.YYYY + HH:MM' format + + -i + prints full time-date stamps in ISO8601 `YYYY-MM-DD HH:MM' + format + + -t FMT + prints time and date stamps in the given format; FMT is + formatted with the strftime function with the zsh extensions + described for the %D{STRING} prompt format in *Note Prompt + Expansion::. The resulting formatted string must be no more + than 256 characters or will not be printed + + -D + prints elapsed times; may be combined with one of the options + above + + `fc -p' pushes the current history list onto a stack and switches + to a new history list. If the -a option is also specified, this + history list will be automatically popped when the current + function scope is exited, which is a much better solution than + creating a trap function to call `fc -P' manually. If no + arguments are specified, the history list is left empty, $HISTFILE + is unset, and $HISTSIZE & $SAVEHIST are set to their default + values. If one argument is given, $HISTFILE is set to that + filename, $HISTSIZE & $SAVEHIST are left unchanged, and the history + file is read in (if it exists) to initialize the new list. If a + second argument is specified, $HISTSIZE & $SAVEHIST are instead + set to the single specified numeric value. Finally, if a third + argument is specified, $SAVEHIST is set to a separate value from + $HISTSIZE. You are free to change these environment values for + the new history list however you desire in order to manipulate the + new history list. + + `fc -P' pops the history list back to an older list saved by `fc + -p'. The current list is saved to its $HISTFILE before it is + destroyed (assuming that $HISTFILE and $SAVEHIST are set + appropriately, of course). The values of $HISTFILE, $HISTSIZE, + and $SAVEHIST are restored to the values they had when `fc -p' was + called. Note that this restoration can conflict with making these + variables "local", so your best bet is to avoid local declarations + for these variables in functions that use `fc -p'. The one other + guaranteed-safe combination is declaring these variables to be + local at the top of your function and using the automatic option + (-a) with `fc -p'. Finally, note that it is legal to manually pop + a push marked for automatic popping if you need to do so before the + function exits. + + `fc -R' reads the history from the given file, `fc -W' writes the + history out to the given file, and `fc -A' appends the history out + to the given file. If no filename is specified, the $HISTFILE is + assumed. If the -I option is added to -R, only those events that + are not already contained within the internal history list are + added. If the -I option is added to -A or -W, only those events + that are new since last incremental append/write to the history + file are appended/written. In any case, the created file will + have no more than $SAVEHIST entries. + +fg [ JOB ... ] +JOB ... + Bring each specified JOB in turn to the foreground. If no JOB is + specified, resume the current job. + +float [ {+|-}Hghlprtux ] [ {+|-}EFLRZ [ N ] ] [ NAME[=VALUE] ... ] + Equivalent to typeset -E, except that options irrelevant to + floating point numbers are not permitted. + +functions [ {+|-}UkmtTuWz ] [ -x NUM ] [ NAME ... ] +functions -c OLDFN NEWFN +functions -M [-s] MATHFN [ MIN [ MAX [ SHELLFN ] ] ] +functions -M [ -m PATTERN ... ] +functions +M [ -m ] MATHFN ... + Equivalent to typeset -f, with the exception of the -c, -x, -M and + -W options. For functions -u and functions -U, see autoload, + which provides additional options. + + The -x option indicates that any functions output will have each + leading tab for indentation, added by the shell to show syntactic + structure, expanded to the given number NUM of spaces. NUM can + also be 0 to suppress all indentation. + + The -W option turns on the option WARN_NESTED_VAR for the named + function or functions only. The option is turned off at the start + of nested functions (apart from anonoymous functions) unless the + called function also has the -W attribute. + + The -c option causes OLDFN to be copied to NEWFN. The copy is + efficiently handled internally by reference counting. If OLDFN + was marked for autoload it is first loaded and if this fails the + copy fails. Either function may subsequently be redefined without + affecting the other. A typical idiom is that OLDFN is the name of + a library shell function which is then redefined to call newfn, + thereby installing a modified version of the function. + + Use of the -M option may not be combined with any of the options + handled by typeset -f. + + functions -M MATHFN defines MATHFN as the name of a mathematical + function recognised in all forms of arithmetical expressions; see + *Note Arithmetic Evaluation::. By default MATHFN may take any + number of comma-separated arguments. If MIN is given, it must + have exactly MIN args; if MIN and MAX are both given, it must have + at least MIN and at most MAX args. MAX may be -1 to indicate that + there is no upper limit. + + By default the function is implemented by a shell function of the + same name; if SHELLFN is specified it gives the name of the + corresponding shell function while MATHFN remains the name used in + arithmetical expressions. The name of the function in $0 is + MATHFN (not SHELLFN as would usually be the case), provided the + option FUNCTION_ARGZERO is in effect. The positional parameters + in the shell function correspond to the arguments of the + mathematical function call. The result of the last arithmetical + expression evaluated inside the shell function (even if it is a + form that normally only returns a status) gives the result of the + mathematical function. + + If the additional option -s is given to functions -M, the argument + to the function is a single string: anything between the opening + and matching closing parenthesis is passed to the function as a + single argument, even if it includes commas or white space. The + minimum and maximum argument specifiers must therefore be 1 if + given. An empty argument list is passed as a zero-length string. + + functions -M with no arguments lists all such user-defined + functions in the same form as a definition. With the additional + option -m and a list of arguments, all functions whose MATHFN + matches one of the pattern arguments are listed. + + function +M removes the list of mathematical functions; with the + additional option -m the arguments are treated as patterns and all + functions whose MATHFN matches the pattern are removed. Note that + the shell function implementing the behaviour is not removed + (regardless of whether its name coincides with MATHFN). + + For example, the following prints the cube of 3: + + + zmath_cube() { (( $1 * $1 * $1 )) } + functions -M cube 1 1 zmath_cube + print $(( cube(3) )) + + The following string function takes a single argument, including + the commas, so prints 11: + + + stringfn() { (( $#1 )) } + functions -Ms stringfn + print $(( stringfn(foo,bar,rod) )) + +getcap + See *Note The zsh/cap Module::. + +getln [ -AclneE ] NAME ... + Read the top value from the buffer stack and put it in the shell + parameter NAME. Equivalent to read -zr. + +getopts OPTSTRING NAME [ ARG ... ] + Checks the ARGs for legal options. If the ARGs are omitted, use + the positional parameters. A valid option argument begins with a + `+' or a `-'. An argument not beginning with a `+' or a `-', or + the argument `--', ends the options. Note that a single `-' is + not considered a valid option argument. OPTSTRING contains the + letters that getopts recognizes. If a letter is followed by a + `:', that option requires an argument. The options can be + separated from the argument by blanks. + + Each time it is invoked, getopts places the option letter it finds + in the shell parameter NAME, prepended with a `+' when ARG begins + with a `+'. The index of the next ARG is stored in OPTIND. The + option argument, if any, is stored in OPTARG. + + The first option to be examined may be changed by explicitly + assigning to OPTIND. OPTIND has an initial value of 1, and is + normally set to 1 upon entry to a shell function and restored upon + exit (this is disabled by the POSIX_BUILTINS option). OPTARG is + not reset and retains its value from the most recent call to + getopts. If either of OPTIND or OPTARG is explicitly unset, it + remains unset, and the index or option argument is not stored. + The option itself is still stored in NAME in this case. + + A leading `:' in OPTSTRING causes getopts to store the letter of + any invalid option in OPTARG, and to set NAME to `?' for an + unknown option and to `:' when a required argument is missing. + Otherwise, getopts sets NAME to `?' and prints an error message + when an option is invalid. The exit status is nonzero when there + are no more options. + +hash [ -Ldfmrv ] [ NAME[=VALUE] ] ... + hash can be used to directly modify the contents of the command + hash table, and the named directory hash table. Normally one would + modify these tables by modifying one's PATH (for the command hash + table) or by creating appropriate shell parameters (for the named + directory hash table). The choice of hash table to work on is + determined by the -d option; without the option the command hash + table is used, and with the option the named directory hash table + is used. + + A command NAME starting with a / is never hashed, whether by + explicit use of the hash command or otherwise. Such a command is + always found by direct look up in the file system. + + Given no arguments, and neither the -r or -f options, the selected + hash table will be listed in full. + + The -r option causes the selected hash table to be emptied. It + will be subsequently rebuilt in the normal fashion. The -f option + causes the selected hash table to be fully rebuilt immediately. + For the command hash table this hashes all the absolute + directories in the PATH, and for the named directory hash table + this adds all users' home directories. These two options cannot + be used with any arguments. + + The -m option causes the arguments to be taken as patterns (which + should be quoted) and the elements of the hash table matching + those patterns are printed. This is the only way to display a + limited selection of hash table elements. + + For each NAME with a corresponding VALUE, put `NAME' in the + selected hash table, associating it with the pathname `VALUE'. In + the command hash table, this means that whenever `NAME' is used as + a command argument, the shell will try to execute the file given + by `VALUE'. In the named directory hash table, this means that + `VALUE' may be referred to as `~NAME'. + + For each NAME with no corresponding VALUE, attempt to add NAME to + the hash table, checking what the appropriate value is in the + normal manner for that hash table. If an appropriate value can't + be found, then the hash table will be unchanged. + + The -v option causes hash table entries to be listed as they are + added by explicit specification. If has no effect if used with -f. + + If the -L flag is present, then each hash table entry is printed in + the form of a call to hash. + +history + Same as fc -l. + +integer [ {+|-}Hghlprtux ] [ {+|-}LRZi [ N ] ] [ NAME[=VALUE] ... ] + Equivalent to typeset -i, except that options irrelevant to + integers are not permitted. + +jobs [ -dlprs ] [ JOB ... ] +jobs -Z STRING + Lists information about each given job, or all jobs if JOB is + omitted. The -l flag lists process IDs, and the -p flag lists + process groups. If the -r flag is specified only running jobs + will be listed and if the -s flag is given only stopped jobs are + shown. If the -d flag is given, the directory from which the job + was started (which may not be the current directory of the job) + will also be shown. + + The -Z option replaces the shell's argument and environment space + with the given string, truncated if necessary to fit. This will + normally be visible in ps (man page ps(1)) listings. This feature + is typically used by daemons, to indicate their state. + +kill [ -s SIGNAL_NAME | -n SIGNAL_NUMBER | -SIG ] JOB ... +kill -l [ SIG ... ] + Sends either SIGTERM or the specified signal to the given jobs or + processes. Signals are given by number or by names, with or + without the `SIG' prefix. If the signal being sent is not `KILL' + or `CONT', then the job will be sent a `CONT' signal if it is + stopped. The argument JOB can be the process ID of a job not in + the job list. In the second form, kill -l, if SIG is not + specified the signal names are listed. Otherwise, for each SIG + that is a name, the corresponding signal number is listed. For + each SIG that is a signal number or a number representing the exit + status of a process which was terminated or stopped by a signal + the name of the signal is printed. + + On some systems, alternative signal names are allowed for a few + signals. Typical examples are SIGCHLD and SIGCLD or SIGPOLL and + SIGIO, assuming they correspond to the same signal number. kill + -l will only list the preferred form, however kill -l ALT will + show if the alternative form corresponds to a signal number. For + example, under Linux kill -l IO and kill -l POLL both output 29, + hence kill -IO and kill -POLL have the same effect. + + Many systems will allow process IDs to be negative to kill a + process group or zero to kill the current process group. + +let ARG ... + Evaluate each ARG as an arithmetic expression. See *Note + Arithmetic Evaluation:: for a description of arithmetic + expressions. The exit status is 0 if the value of the last + expression is nonzero, 1 if it is zero, and 2 if an error occurred. + +limit [ -hs ] [ RESOURCE [ LIMIT ] ] ... + Set or display resource limits. Unless the -s flag is given, the + limit applies only the children of the shell. If -s is given + without other arguments, the resource limits of the current shell + is set to the previously set resource limits of the children. + + If LIMIT is not specified, print the current limit placed on + RESOURCE, otherwise set the limit to the specified value. If the + -h flag is given, use hard limits instead of soft limits. If no + RESOURCE is given, print all limits. + + When looping over multiple resources, the shell will abort + immediately if it detects a badly formed argument. However, if it + fails to set a limit for some other reason it will continue trying + to set the remaining limits. + + RESOURCE can be one of: + + + addressspace + Maximum amount of address space used. + + aiomemorylocked + Maximum amount of memory locked in RAM for AIO operations. + + aiooperations + Maximum number of AIO operations. + + cachedthreads + Maximum number of cached threads. + + coredumpsize + Maximum size of a core dump. + + cputime + Maximum CPU seconds per process. + + datasize + Maximum data size (including stack) for each process. + + descriptors + Maximum value for a file descriptor. + + filesize + Largest single file allowed. + + kqueues + Maximum number of kqueues allocated. + + maxproc + Maximum number of processes. + + maxpthreads + Maximum number of threads per process. + + memorylocked + Maximum amount of memory locked in RAM. + + memoryuse + Maximum resident set size. + + msgqueue + Maximum number of bytes in POSIX message queues. + + posixlocks + Maximum number of POSIX locks per user. + + pseudoterminals + Maximum number of pseudo-terminals. + + resident + Maximum resident set size. + + sigpending + Maximum number of pending signals. + + sockbufsize + Maximum size of all socket buffers. + + stacksize + Maximum stack size for each process. + + swapsize + Maximum amount of swap used. + + vmemorysize + Maximum amount of virtual memory. + + Which of these resource limits are available depends on the system. + RESOURCE can be abbreviated to any unambiguous prefix. It can + also be an integer, which corresponds to the integer defined for + the resource by the operating system. + + If argument corresponds to a number which is out of the range of + the resources configured into the shell, the shell will try to + read or write the limit anyway, and will report an error if this + fails. As the shell does not store such resources internally, an + attempt to set the limit will fail unless the -s option is present. + + LIMIT is a number, with an optional scaling factor, as follows: + + + Nh + hours + + Nk + kilobytes (default) + + Nm + megabytes or minutes + + Ng + gigabytes + + [MM:]SS + minutes and seconds + + The limit command is not made available by default when the shell + starts in a mode emulating another shell. It can be made available + with the command `zmodload -F zsh/rlimits b:limit'. + +local [ {+|-}AHUahlprtux ] [ {+|-}EFLRZi [ N ] ] [ NAME[=VALUE] ... ] + Same as typeset, except that the options -g, and -f are not + permitted. In this case the -x option does not force the use of + -g, i.e. exported variables will be local to functions. + +log + List all users currently logged in who are affected by the current + setting of the watch parameter. + +logout [ N ] + Same as exit, except that it only works in a login shell. + +noglob SIMPLE COMMAND + See *Note Precommand Modifiers::. + +popd [ -q ] [ {+|-}N ] + Remove an entry from the directory stack, and perform a cd to the + new top directory. With no argument, the current top entry is + removed. An argument of the form `+N' identifies a stack entry by + counting from the left of the list shown by the dirs command, + starting with zero. An argument of the form -N counts from the + right. If the PUSHD_MINUS option is set, the meanings of `+' and + `-' in this context are swapped. + + If the -q (quiet) option is specified, the hook function chpwd and + the functions in the array $chpwd_functions are not called, and + the new directory stack is not printed. This is useful for calls + to popd that do not change the environment seen by an interactive + user. + +print [ -abcDilmnNoOpPrsSz ] [ -u N ] [ -f FORMAT ] [ -C COLS ] + [ -v NAME ] [ -xX TABSTOP ] [ -R [ -en ]] [ ARG ... ] + With the `-f' option the arguments are printed as described by + printf. With no flags or with the flag `-', the arguments are + printed on the standard output as described by echo, with the + following differences: the escape sequence `\M-X' (or `\MX') + metafies the character X (sets the highest bit), `\C-X' (or `\CX') + produces a control character (`\C-@' and `\C-?' give the + characters NULL and delete), a character code in octal is + represented by `\NNN' (instead of `\0NNN'), and `\E' is a synonym + for `\e'. Finally, if not in an escape sequence, `\' escapes the + following character and is not printed. + + + -a + Print arguments with the column incrementing first. Only + useful with the -c and -C options. + + -b + Recognize all the escape sequences defined for the bindkey + command, see *Note Zle Builtins::. + + -c + Print the arguments in columns. Unless -a is also given, + arguments are printed with the row incrementing first. + + -C COLS + Print the arguments in COLS columns. Unless -a is also given, + arguments are printed with the row incrementing first. + + -D + Treat the arguments as paths, replacing directory prefixes + with ~ expressions corresponding to directory names, as + appropriate. + + -i + If given together with -o or -O, sorting is performed + case-independently. + + -l + Print the arguments separated by newlines instead of spaces. + Note: if the list of arguments is empty, print -l will still + output one empty line. To print a possibly-empty list of + arguments one per line, use print -C1, as in `print -rC1 - + "$list[@]"'. + + -m + Take the first argument as a pattern (should be quoted), and + remove it from the argument list together with subsequent + arguments that do not match this pattern. + + -n + Do not add a newline to the output. + + -N + Print the arguments separated and terminated by nulls. Again, + print -rNC1 - "$list[@]" is a canonical way to print an + arbitrary list as null-delimited records. + + -o + Print the arguments sorted in ascending order. + + -O + Print the arguments sorted in descending order. + + -p + Print the arguments to the input of the coprocess. + + -P + Perform prompt expansion (see *Note Prompt Expansion::). In + combination with `-f', prompt escape sequences are parsed + only within interpolated arguments, not within the format + string. + + -r + Ignore the escape conventions of echo. + + -R + Emulate the BSD echo command, which does not process escape + sequences unless the -e flag is given. The -n flag + suppresses the trailing newline. Only the -e and -n flags + are recognized after -R; all other arguments and options are + printed. + + -s + Place the results in the history list instead of on the + standard output. Each argument to the print command is + treated as a single word in the history, regardless of its + content. + + -S + Place the results in the history list instead of on the + standard output. In this case only a single argument is + allowed; it will be split into words as if it were a full + shell command line. The effect is similar to reading the + line from a history file with the HIST_LEX_WORDS option + active. + + -u N + Print the arguments to file descriptor N. + + -v NAME + Store the printed arguments as the value of the parameter + NAME. + + -x TAB-STOP + Expand leading tabs on each line of output in the printed + string assuming a tab stop every TAB-STOP characters. This + is appropriate for formatting code that may be indented with + tabs. Note that leading tabs of any argument to print, not + just the first, are expanded, even if print is using spaces + to separate arguments (the column count is maintained across + arguments but may be incorrect on output owing to previous + unexpanded tabs). + + The start of the output of each print command is assumed to + be aligned with a tab stop. Widths of multibyte characters + are handled if the option MULTIBYTE is in effect. This + option is ignored if other formatting options are in effect, + namely column alignment or printf style, or if output is to a + special location such as shell history or the command line + editor. + + -X TAB-STOP + This is similar to -x, except that all tabs in the printed + string are expanded. This is appropriate if tabs in the + arguments are being used to produce a table format. + + -z + Push the arguments onto the editing buffer stack, separated + by spaces. + + + If any of `-m', `-o' or `-O' are used in combination with `-f' and + there are no arguments (after the removal process in the case of + `-m') then nothing is printed. + +printf [ -v NAME ] FORMAT [ ARG ... ] + Print the arguments according to the format specification. + Formatting rules are the same as used in C. The same escape + sequences as for echo are recognised in the format. All C + conversion specifications ending in one of csdiouxXeEfgGn are + handled. In addition to this, `%b' can be used instead of `%s' to + cause escape sequences in the argument to be recognised and `%q' + can be used to quote the argument in such a way that allows it to + be reused as shell input. With the numeric format specifiers, if + the corresponding argument starts with a quote character, the + numeric value of the following character is used as the number to + print; otherwise the argument is evaluated as an arithmetic + expression. See *Note Arithmetic Evaluation:: for a description of + arithmetic expressions. With `%n', the corresponding argument is + taken as an identifier which is created as an integer parameter. + + Normally, conversion specifications are applied to each argument + in order but they can explicitly specify the Nth argument is to be + used by replacing `%' by `%N$' and `*' by `*N$'. It is + recommended that you do not mix references of this explicit style + with the normal style and the handling of such mixed styles may be + subject to future change. + + If arguments remain unused after formatting, the format string is + reused until all arguments have been consumed. With the print + builtin, this can be suppressed by using the -r option. If more + arguments are required by the format than have been specified, the + behaviour is as if zero or an empty string had been specified as + the argument. + + The -v option causes the output to be stored as the value of the + parameter NAME, instead of printed. If NAME is an array and the + format string is reused when consuming arguments then one array + element will be used for each use of the format string. + +pushd [ -qsLP ] [ ARG ] +pushd [ -qsLP ] OLD NEW +pushd [ -qsLP ] {+|-}N + Change the current directory, and push the old current directory + onto the directory stack. In the first form, change the current + directory to ARG. If ARG is not specified, change to the second + directory on the stack (that is, exchange the top two entries), or + change to $HOME if the PUSHD_TO_HOME option is set or if there is + only one entry on the stack. Otherwise, ARG is interpreted as it + would be by cd. The meaning of OLD and NEW in the second form is + also the same as for cd. + + The third form of pushd changes directory by rotating the + directory list. An argument of the form `+N' identifies a stack + entry by counting from the left of the list shown by the dirs + command, starting with zero. An argument of the form `-N' counts + from the right. If the PUSHD_MINUS option is set, the meanings of + `+' and `-' in this context are swapped. + + If the -q (quiet) option is specified, the hook function chpwd and + the functions in the array $chpwd_functions are not called, and + the new directory stack is not printed. This is useful for calls + to pushd that do not change the environment seen by an interactive + user. + + If the option -q is not specified and the shell option PUSHD_SILENT + is not set, the directory stack will be printed after a pushd is + performed. + + The options -s, -L and -P have the same meanings as for the cd + builtin. + +pushln [ ARG ... ] + Equivalent to print -nz. + +pwd [ -rLP ] + Print the absolute pathname of the current working directory. If + the -r or the -P flag is specified, or the CHASE_LINKS option is + set and the -L flag is not given, the printed path will not + contain symbolic links. + +r + Same as fc -e -. + +read [ -rszpqAclneE ] [ -t [ NUM ] ] [ -k [ NUM ] ] [ -d DELIM ] + [ -u N ] [ NAME[?PROMPT] ] [ NAME ... ] + Read one line and break it into fields using the characters in + $IFS as separators, except as noted below. The first field is + assigned to the first NAME, the second field to the second NAME, + etc., with leftover fields assigned to the last NAME. If NAME is + omitted then REPLY is used for scalars and reply for arrays. + + + -r + Raw mode: a `\' at the end of a line does not signify line + continuation and backslashes in the line don't quote the + following character and are not removed. + + -s + Don't echo back characters if reading from the terminal. + + -q + Read only one character from the terminal and set NAME to `y' + if this character was `y' or `Y' and to `n' otherwise. With + this flag set the return status is zero only if the character + was `y' or `Y'. This option may be used with a timeout (see + -t); if the read times out, or encounters end of file, status + 2 is returned. Input is read from the terminal unless one of + -u or -p is present. This option may also be used within zle + widgets. + + -k [ NUM ] + Read only one (or NUM) characters. All are assigned to the + first NAME, without word splitting. This flag is ignored + when -q is present. Input is read from the terminal unless + one of -u or -p is present. This option may also be used + within zle widgets. + + Note that despite the mnemonic `key' this option does read + full characters, which may consist of multiple bytes if the + option MULTIBYTE is set. + + -z + Read one entry from the editor buffer stack and assign it to + the first NAME, without word splitting. Text is pushed onto + the stack with `print -z' or with push-line from the line + editor (see *Note Zsh Line Editor::). This flag is ignored + when the -k or -q flags are present. + + -e + -E + The input read is printed (echoed) to the standard output. + If the -e flag is used, no input is assigned to the + parameters. + + -A + The first NAME is taken as the name of an array and all words + are assigned to it. + + -c + -l + These flags are allowed only if called inside a function used + for completion (specified with the -K flag to compctl). If + the -c flag is given, the words of the current command are + read. If the -l flag is given, the whole line is assigned as + a scalar. If both flags are present, -l is used and -c is + ignored. + + -n + Together with -c, the number of the word the cursor is on is + read. With -l, the index of the character the cursor is on is + read. Note that the command name is word number 1, not word + 0, and that when the cursor is at the end of the line, its + character index is the length of the line plus one. + + -u N + Input is read from file descriptor N. + + -p + Input is read from the coprocess. + + -d DELIM + Input is terminated by the first character of DELIM instead of + by newline. + + -t [ NUM ] + Test if input is available before attempting to read. If NUM + is present, it must begin with a digit and will be evaluated + to give a number of seconds, which may be a floating point + number; in this case the read times out if input is not + available within this time. If NUM is not present, it is + taken to be zero, so that read returns immediately if no + input is available. If no input is available, return status + 1 and do not set any variables. + + This option is not available when reading from the editor + buffer with -z, when called from within completion with -c or + -l, with -q which clears the input queue before reading, or + within zle where other mechanisms should be used to test for + input. + + Note that read does not attempt to alter the input processing + mode. The default mode is canonical input, in which an + entire line is read at a time, so usually `read -t' will not + read anything until an entire line has been typed. However, + when reading from the terminal with -k input is processed one + key at a time; in this case, only availability of the first + character is tested, so that e.g. `read -t -k 2' can still + block on the second character. Use two instances of `read -t + -k' if this is not what is wanted. + + + If the first argument contains a `?', the remainder of this word + is used as a PROMPT on standard error when the shell is + interactive. + + The value (exit status) of read is 1 when an end-of-file is + encountered, or when -c or -l is present and the command is not + called from a compctl function, or as described for -q. Otherwise + the value is 0. + + The behavior of some combinations of the -k, -p, -q, -u and -z + flags is undefined. Presently -q cancels all the others, -p + cancels -u, -k cancels -z, and otherwise -z cancels both -p and -u. + + The -c or -l flags cancel any and all of -kpquz. + +readonly + Same as typeset -r. With the POSIX_BUILTINS option set, same as + typeset -gr. + +rehash + Same as hash -r. + +return [ N ] + Causes a shell function or `.' script to return to the invoking + script with the return status specified by an arithmetic + expression N. If N is omitted, the return status is that of the + last command executed. + + If return was executed from a trap in a TRAPNAL function, the + effect is different for zero and non-zero return status. With zero + status (or after an implicit return at the end of the trap), the + shell will return to whatever it was previously processing; with a + non-zero status, the shell will behave as interrupted except that + the return status of the trap is retained. Note that the numeric + value of the signal which caused the trap is passed as the first + argument, so the statement `return $((128+$1))' will return the + same status as if the signal had not been trapped. + +sched + See *Note The zsh/sched Module::. + +set [ {+|-}OPTIONS | {+|-}o [ OPTION_NAME ] ] ... [ {+|-}A [ NAME ] ] + [ ARG ... ] + Set the options for the shell and/or set the positional + parameters, or declare and set an array. If the -s option is + given, it causes the specified arguments to be sorted before + assigning them to the positional parameters (or to the array NAME + if -A is used). With +s sort arguments in descending order. For + the meaning of the other flags, see *Note Options::. Flags may be + specified by name using the -o option. If no option name is + supplied with -o, the current option states are printed: see the + description of setopt below for more information on the format. + With +o they are printed in a form that can be used as input to + the shell. + + If the -A flag is specified, NAME is set to an array containing + the given ARGs; if no NAME is specified, all arrays are printed + together with their values. + + If +A is used and NAME is an array, the given arguments will + replace the initial elements of that array; if no NAME is + specified, all arrays are printed without their values. + + The behaviour of arguments after -A NAME or +A NAME depends on + whether the option KSH_ARRAYS is set. If it is not set, all + arguments following NAME are treated as values for the array, + regardless of their form. If the option is set, normal option + processing continues at that point; only regular arguments are + treated as values for the array. This means that + + + set -A array -x -- foo + + sets array to `-x -- foo' if KSH_ARRAYS is not set, but sets the + array to foo and turns on the option `-x' if it is set. + + If the -A flag is not present, but there are arguments beyond the + options, the positional parameters are set. If the option list + (if any) is terminated by `--', and there are no further + arguments, the positional parameters will be unset. + + If no arguments and no `--' are given, then the names and values of + all parameters are printed on the standard output. If the only + argument is `+', the names of all parameters are printed. + + For historical reasons, `set -' is treated as `set +xv' and `set - + ARGS' as `set +xv - ARGS' when in any other emulation mode than + zsh's native mode. + +setcap + See *Note The zsh/cap Module::. + +setopt [ {+|-}OPTIONS | {+|-}o OPTION_NAME ] [ -m ] [ NAME ... ] + Set the options for the shell. All options specified either with + flags or by name are set. + + If no arguments are supplied, the names of all options currently + set are printed. The form is chosen so as to minimize the + differences from the default options for the current emulation + (the default emulation being native zsh, shown as <Z> in *Note + Description of Options::). Options that are on by default for the + emulation are shown with the prefix no only if they are off, while + other options are shown without the prefix no and only if they are + on. In addition to options changed from the default state by the + user, any options activated automatically by the shell (for + example, SHIN_STDIN or INTERACTIVE) will be shown in the list. + The format is further modified by the option KSH_OPTION_PRINT, + however the rationale for choosing options with or without the no + prefix remains the same in this case. + + If the -m flag is given the arguments are taken as patterns (which + should be quoted to protect them from filename expansion), and all + options with names matching these patterns are set. + + Note that a bad option name does not cause execution of subsequent + shell code to be aborted; this is behaviour is different from that + of `set -o'. This is because set is regarded as a special builtin + by the POSIX standard, but setopt is not. + +shift [ -p ] [ N ] [ NAME ... ] + The positional parameters ${N+1} ... are renamed to $1 ..., where + N is an arithmetic expression that defaults to 1. If any NAMEs + are given then the arrays with these names are shifted instead of + the positional parameters. + + If the option -p is given arguments are instead removed (popped) + from the end rather than the start of the array. + +source FILE [ ARG ... ] + Same as `.', except that the current directory is always searched + and is always searched first, before directories in $path. + +stat + See *Note The zsh/stat Module::. + +suspend [ -f ] + Suspend the execution of the shell (send it a SIGTSTP) until it + receives a SIGCONT. Unless the -f option is given, this will + refuse to suspend a login shell. + +test [ ARG ... ] +[ [ ARG ... ] ] + Like the system version of test. Added for compatibility; use + conditional expressions instead (see *Note Conditional + Expressions::). The main differences between the conditional + expression syntax and the test and [ builtins are: these commands + are not handled syntactically, so for example an empty variable + expansion may cause an argument to be omitted; syntax errors cause + status 2 to be returned instead of a shell error; and arithmetic + operators expect integer arguments rather than arithmetic + expressions. + + The command attempts to implement POSIX and its extensions where + these are specified. Unfortunately there are intrinsic + ambiguities in the syntax; in particular there is no distinction + between test operators and strings that resemble them. The + standard attempts to resolve these for small numbers of arguments + (up to four); for five or more arguments compatibility cannot be + relied on. Users are urged wherever possible to use the `[[' test + syntax which does not have these ambiguities. + +times + Print the accumulated user and system times for the shell and for + processes run from the shell. + +trap [ ARG ] [ SIG ... ] + ARG is a series of commands (usually quoted to protect it from + immediate evaluation by the shell) to be read and executed when + the shell receives any of the signals specified by one or more SIG + args. Each SIG can be given as a number, or as the name of a + signal either with or without the string SIG in front (e.g. 1, + HUP, and SIGHUP are all the same signal). + + If ARG is `-', then the specified signals are reset to their + defaults, or, if no SIG args are present, all traps are reset. + + If ARG is an empty string, then the specified signals are ignored + by the shell (and by the commands it invokes). + + If ARG is omitted but one or more SIG args are provided (i.e. the + first argument is a valid signal number or name), the effect is the + same as if ARG had been specified as `-'. + + The trap command with no arguments prints a list of commands + associated with each signal. + + If SIG is ZERR then ARG will be executed after each command with a + nonzero exit status. ERR is an alias for ZERR on systems that + have no SIGERR signal (this is the usual case). + + If SIG is DEBUG then ARG will be executed before each command if + the option DEBUG_BEFORE_CMD is set (as it is by default), else + after each command. Here, a `command' is what is described as a + `sublist' in the shell grammar, see *Note Simple Commands & + Pipelines::. If DEBUG_BEFORE_CMD is set various additional + features are available. First, it is possible to skip the next + command by setting the option ERR_EXIT; see the description of the + ERR_EXIT option in *Note Description of Options::. Also, the + shell parameter ZSH_DEBUG_CMD is set to the string corresponding + to the command to be executed following the trap. Note that this + string is reconstructed from the internal format and may not be + formatted the same way as the original text. The parameter is + unset after the trap is executed. + + If SIG is 0 or EXIT and the trap statement is executed inside the + body of a function, then the command ARG is executed after the + function completes. The value of $? at the start of execution is + the exit status of the shell or the return status of the function + exiting. If SIG is 0 or EXIT and the trap statement is not + executed inside the body of a function, then the command ARG is + executed when the shell terminates; the trap runs before any + zshexit hook functions. + + ZERR, DEBUG, and EXIT traps are not executed inside other traps. + ZERR and DEBUG traps are kept within subshells, while other traps + are reset. + + Note that traps defined with the trap builtin are slightly + different from those defined as `TRAPNAL () { ... }', as the + latter have their own function environment (line numbers, local + variables, etc.) while the former use the environment of the + command in which they were called. For example, + + + trap 'print $LINENO' DEBUG + + will print the line number of a command executed after it has run, + while + + + TRAPDEBUG() { print $LINENO; } + + will always print the number zero. + + Alternative signal names are allowed as described under kill above. + Defining a trap under either name causes any trap under an + alternative name to be removed. However, it is recommended that + for consistency users stick exclusively to one name or another. + +true [ ARG ... ] + Do nothing and return an exit status of 0. + +ttyctl [ -fu ] + The -f option freezes the tty (i.e. terminal or terminal + emulator), and -u unfreezes it. When the tty is frozen, no + changes made to the tty settings by external programs will be + honored by the shell, except for changes in the size of the + screen; the shell will simply reset the settings to their previous + values as soon as each command exits or is suspended. Thus, stty + and similar programs have no effect when the tty is frozen. + Freezing the tty does not cause the current state to be + remembered: instead, it causes future changes to the state to be + blocked. + + Without options it reports whether the terminal is frozen or not. + + Note that, regardless of whether the tty is frozen or not, the + shell needs to change the settings when the line editor starts, so + unfreezing the tty does not guarantee settings made on the command + line are preserved. Strings of commands run between editing the + command line will see a consistent tty state. See also the shell + variable STTY for a means of initialising the tty before running + external commands. + +type [ -wfpamsS ] NAME ... + Equivalent to whence -v. + +typeset [ {+|-}AHUaghlmrtux ] [ {+|-}EFLRZip [ N ] ] + [ + ] [ NAME[=VALUE] ... ] +typeset -T [ {+|-}Uglrux ] [ {+|-}LRZp [ N ] ] + [ + | SCALAR[=VALUE] ARRAY[=(VALUE ...)] [ SEP ] ] +typeset -f [ {+|-}TUkmtuz ] [ + ] [ NAME ... ] + Set or display attributes and values for shell parameters. + + Except as noted below for control flags that change the behavior, + a parameter is created for each NAME that does not already refer + to one. When inside a function, a new parameter is created for + every NAME (even those that already exist), and is unset again + when the function completes. See *Note Local Parameters::. The + same rules apply to special shell parameters, which retain their + special attributes when made local. + + For each NAME=VALUE assignment, the parameter NAME is set to VALUE. + + If the shell option TYPESET_SILENT is not set, for each remaining + NAME that refers to a parameter that is already set, the name and + value of the parameter are printed in the form of an assignment. + Nothing is printed for newly-created parameters, or when any + attribute flags listed below are given along with the NAME. Using + `+' instead of minus to introduce an attribute turns it off. + + If no NAME is present, the names and values of all parameters are + printed. In this case the attribute flags restrict the display to + only those parameters that have the specified attributes, and + using `+' rather than `-' to introduce the flag suppresses + printing of the values of parameters when there is no parameter + name. + + All forms of the command handle scalar assignment. Array + assignment is possible if any of the reserved words declare, + export, float, integer, local, readonly or typeset is matched when + the line is parsed (N.B. not when it is executed). In this case + the arguments are parsed as assignments, except that the `+=' + syntax and the GLOB_ASSIGN option are not supported, and scalar + values after = are _not_ split further into words, even if + expanded (regardless of the setting of the KSH_TYPESET option; + this option is obsolete). + + Examples of the differences between command and reserved word + parsing: + + + # Reserved word parsing + typeset svar=$(echo one word) avar=(several words) + + The above creates a scalar parameter svar and an array parameter + avar as if the assignments had been + + + svar="one word" + avar=(several words) + + On the other hand: + + + # Normal builtin interface + builtin typeset svar=$(echo two words) + + The builtin keyword causes the above to use the standard builtin + interface to typeset in which argument parsing is performed in the + same way as for other commands. This example creates a scalar svar + containing the value two and another scalar parameter words with + no value. An array value in this case would either cause an error + or be treated as an obscure set of glob qualifiers. + + Arbitrary arguments are allowed if they take the form of + assignments after command line expansion; however, these only + perform scalar assignment: + + + var='svar=val' + typeset $var + + The above sets the scalar parameter svar to the value val. + Parentheses around the value within var would not cause array + assignment as they will be treated as ordinary characters when $var + is substituted. Any non-trivial expansion in the name part of the + assignment causes the argument to be treated in this fashion: + + + typeset {var1,var2,var3}=name + + The above syntax is valid, and has the expected effect of setting + the three parameters to the same value, but the command line is + parsed as a set of three normal command line arguments to typeset + after expansion. Hence it is not possible to assign to multiple + arrays by this means. + + Note that each interface to any of the commands my be disabled + separately. For example, `disable -r typeset' disables the + reserved word interface to typeset, exposing the builtin + interface, while `disable typeset' disables the builtin. Note + that disabling the reserved word interface for typeset may cause + problems with the output of `typeset -p', which assumes the + reserved word interface is available in order to restore array and + associative array values. + + Unlike parameter assignment statements, typeset's exit status on an + assignment that involves a command substitution does not reflect + the exit status of the command substitution. Therefore, to test + for an error in a command substitution, separate the declaration + of the parameter from its initialization: + + + # WRONG + typeset var1=$(exit 1) || echo "Trouble with var1" + + # RIGHT + typeset var1 && var1=$(exit 1) || echo "Trouble with var1" + + To initialize a parameter PARAM to a command output and mark it + readonly, use typeset -r PARAM or readonly PARAM after the + parameter assignment statement. + + If no attribute flags are given, and either no NAME arguments are + present or the flag +m is used, then each parameter name printed is + preceded by a list of the attributes of that parameter (array, + association, exported, float, integer, readonly, or undefined for + autoloaded parameters not yet loaded). If +m is used with + attribute flags, and all those flags are introduced with +, the + matching parameter names are printed but their values are not. + + The following control flags change the behavior of typeset: + + + + + If `+' appears by itself in a separate word as the last + option, then the names of all parameters (functions with -f) + are printed, but the values (function bodies) are not. No + NAME arguments may appear, and it is an error for any other + options to follow `+'. The effect of `+' is as if all + attribute flags which precede it were given with a `+' + prefix. For example, `typeset -U +' is equivalent to + `typeset +U' and displays the names of all arrays having the + uniqueness attribute, whereas `typeset -f -U +' displays the + names of all autoloadable functions. If + is the only option, + then type information (array, readonly, etc.) is also printed + for each parameter, in the same manner as `typeset +m "*"'. + + -g + The -g (global) means that any resulting parameter will not be + restricted to local scope. Note that this does not + necessarily mean that the parameter will be global, as the + flag will apply to any existing parameter (even if unset) + from an enclosing function. This flag does not affect the + parameter after creation, hence it has no effect when listing + existing parameters, nor does the flag +g have any effect + except in combination with -m (see below). + + -m + If the -m flag is given the NAME arguments are taken as + patterns (use quoting to prevent these from being interpreted + as file patterns). With no attribute flags, all parameters + (or functions with the -f flag) with matching names are + printed (the shell option TYPESET_SILENT is not used in this + case). + + If the +g flag is combined with -m, a new local parameter is + created for every matching parameter that is not already + local. Otherwise -m applies all other flags or assignments + to the existing parameters. + + Except when assignments are made with NAME=VALUE, using +m + forces the matching parameters and their attributes to be + printed, even inside a function. Note that -m is ignored if + no patterns are given, so `typeset -m' displays attributes + but `typeset -a +m' does not. + + -p [ N ] + If the -p option is given, parameters and values are printed + in the form of a typeset command with an assignment, + regardless of other flags and options. Note that the -H flag + on parameters is respected; no value will be shown for these + parameters. + + -p may be followed by an optional integer argument. Currently + only the value 1 is supported. In this case arrays and + associative arrays are printed with newlines between indented + elements for readability. + + -T [ SCALAR[=VALUE] ARRAY[=(VALUE ...)] [ SEP ] ] + This flag has a different meaning when used with -f; see + below. Otherwise the -T option requires zero, two, or three + arguments to be present. With no arguments, the list of + parameters created in this fashion is shown. With two or + three arguments, the first two are the name of a scalar and + of an array parameter (in that order) that will be tied + together in the manner of $PATH and $path. The optional third + argument is a single-character separator which will be used + to join the elements of the array to form the scalar; if + absent, a colon is used, as with $PATH. Only the first + character of the separator is significant; any remaining + characters are ignored. Multibyte characters are not yet + supported. + + Only one of the scalar and array parameters may be assigned + an initial value (the restrictions on assignment forms + described above also apply). + + Both the scalar and the array may be manipulated as normal. + If one is unset, the other will automatically be unset too. + There is no way of untying the variables without unsetting + them, nor of converting the type of one of them with another + typeset command; +T does not work, assigning an array to + SCALAR is an error, and assigning a scalar to ARRAY sets it + to be a single-element array. + + Note that both `typeset -xT ...' and `export -T ...' work, + but only the scalar will be marked for export. Setting the + value using the scalar version causes a split on all + separators (which cannot be quoted). It is possible to apply + -T to two previously tied variables but with a different + separator character, in which case the variables remain joined + as before but the separator is changed. + + When an existing scalar is tied to a new array, the value of + the scalar is preserved but no attribute other than export + will be preserved. + + + Attribute flags that transform the final value (-L, -R, -Z, -l, + -u) are only applied to the expanded value at the point of a + parameter expansion expression using `$'. They are not applied + when a parameter is retrieved internally by the shell for any + purpose. + + The following attribute flags may be specified: + + + -A + The names refer to associative array parameters; see *Note + Array Parameters::. + + -L [ N ] + Left justify and remove leading blanks from the value when + the parameter is expanded. If N is nonzero, it defines the + width of the field. If N is zero, the width is determined by + the width of the value of the first assignment. In the case + of numeric parameters, the length of the complete value + assigned to the parameter is used to determine the width, not + the value that would be output. + + The width is the count of characters, which may be multibyte + characters if the MULTIBYTE option is in effect. Note that + the screen width of the character is not taken into account; + if this is required, use padding with parameter expansion + flags ${(ml...)...} as described in `Parameter Expansion + Flags' in *Note Parameter Expansion::. + + When the parameter is expanded, it is filled on the right with + blanks or truncated if necessary to fit the field. Note + truncation can lead to unexpected results with numeric + parameters. Leading zeros are removed if the -Z flag is also + set. + + -R [ N ] + Similar to -L, except that right justification is used; when + the parameter is expanded, the field is left filled with + blanks or truncated from the end. May not be combined with + the -Z flag. + + -U + For arrays (but not for associative arrays), keep only the + first occurrence of each duplicated value. This may also be + set for tied parameters (see -T) or colon-separated special + parameters like PATH or FIGNORE, etc. Note the flag takes + effect on assignment, and the type of the variable being + assigned to is determinative; for variables with shared + values it is therefore recommended to set the flag for all + interfaces, e.g. `typeset -U PATH path'. + + This flag has a different meaning when used with -f; see + below. + + -Z [ N ] + Specially handled if set along with the -L flag. Otherwise, + similar to -R, except that leading zeros are used for padding + instead of blanks if the first non-blank character is a digit. + Numeric parameters are specially handled: they are always + eligible for padding with zeroes, and the zeroes are inserted + at an appropriate place in the output. + + -a + The names refer to array parameters. An array parameter may + be created this way, but it may be assigned to in the typeset + statement only if the reserved word form of typeset is enabled + (as it is by default). When displaying, both normal and + associative arrays are shown. + + -f + The names refer to functions rather than parameters. No + assignments can be made, and the only other valid flags are + -t, -T, -k, -u, -U and -z. The flag -t turns on execution + tracing for this function; the flag -T does the same, but + turns off tracing for any named (not anonymous) function + called from the present one, unless that function also has + the -t or -T flag. The -u and -U flags cause the function to + be marked for autoloading; -U also causes alias expansion to + be suppressed when the function is loaded. See the + description of the `autoload' builtin for details. + + Note that the builtin functions provides the same basic + capabilities as typeset -f but gives access to a few extra + options; autoload gives further additional options for the + case typeset -fu and typeset -fU. + + -h + Hide: only useful for special parameters (those marked `<S>' + in the table in *Note Parameters Set By The Shell::), and for + local parameters with the same name as a special parameter, + though harmless for others. A special parameter with this + attribute will not retain its special effect when made local. + Thus after `typeset -h PATH', a function containing `typeset + PATH' will create an ordinary local parameter without the + usual behaviour of PATH. Alternatively, the local parameter + may itself be given this attribute; hence inside a function + `typeset -h PATH' creates an ordinary local parameter and the + special PATH parameter is not altered in any way. It is also + possible to create a local parameter using `typeset +h + SPECIAL', where the local copy of SPECIAL will retain its + special properties regardless of having the -h attribute. + Global special parameters loaded from shell modules + (currently those in zsh/mapfile and zsh/parameter) are + automatically given the -h attribute to avoid name clashes. + + -H + Hide value: specifies that typeset will not display the value + of the parameter when listing parameters; the display for + such parameters is always as if the `+' flag had been given. + Use of the parameter is in other respects normal, and the + option does not apply if the parameter is specified by name, + or by pattern with the -m option. This is on by default for + the parameters in the zsh/parameter and zsh/mapfile modules. + Note, however, that unlike the -h flag this is also useful + for non-special parameters. + + -i [ N ] + Use an internal integer representation. If N is nonzero it + defines the output arithmetic base, otherwise it is + determined by the first assignment. Bases from 2 to 36 + inclusive are allowed. + + -E [ N ] + Use an internal double-precision floating point + representation. On output the variable will be converted to + scientific notation. If N is nonzero it defines the number + of significant figures to display; the default is ten. + + -F [ N ] + Use an internal double-precision floating point + representation. On output the variable will be converted to + fixed-point decimal notation. If N is nonzero it defines the + number of digits to display after the decimal point; the + default is ten. + + -l + Convert the result to lower case whenever the parameter is + expanded. The value is _not_ converted when assigned. + + -r + The given NAMEs are marked readonly. Note that if NAME is a + special parameter, the readonly attribute can be turned on, + but cannot then be turned off. + + If the POSIX_BUILTINS option is set, the readonly attribute is + more restrictive: unset variables can be marked readonly and + cannot then be set; furthermore, the readonly attribute + cannot be removed from any variable. + + It is still possible to change other attributes of the + variable though, some of which like -U or -Z would affect the + value. More generally, the readonly attribute should not be + relied on as a security mechanism. + + Note that in zsh (like in pdksh but unlike most other shells) + it is still possible to create a local variable of the same + name as this is considered a different variable (though this + variable, too, can be marked readonly). Special variables + that have been made readonly retain their value and readonly + attribute when made local. + + -t + Tags the named parameters. Tags have no special meaning to + the shell. This flag has a different meaning when used with + -f; see above. + + -u + Convert the result to upper case whenever the parameter is + expanded. The value is _not_ converted when assigned. This + flag has a different meaning when used with -f; see above. + + -x + Mark for automatic export to the environment of subsequently + executed commands. If the option GLOBAL_EXPORT is set, this + implies the option -g, unless +g is also explicitly given; in + other words the parameter is not made local to the enclosing + function. This is for compatibility with previous versions + of zsh. + + +ulimit [ -HSa ] [ { -bcdfiklmnpqrsTtvwx | -N RESOURCE } [ LIMIT ] ... ] + Set or display resource limits of the shell and the processes + started by the shell. The value of LIMIT can be a number in the + unit specified below or one of the values `unlimited', which + removes the limit on the resource, or `hard', which uses the + current value of the hard limit on the resource. + + By default, only soft limits are manipulated. If the -H flag is + given use hard limits instead of soft limits. If the -S flag is + given together with the -H flag set both hard and soft limits. + + If no options are used, the file size limit (-f) is assumed. + + If LIMIT is omitted the current value of the specified resources + are printed. When more than one resource value is printed, the + limit name and unit is printed before each value. + + When looping over multiple resources, the shell will abort + immediately if it detects a badly formed argument. However, if it + fails to set a limit for some other reason it will continue trying + to set the remaining limits. + + Not all the following resources are supported on all systems. + Running ulimit -a will show which are supported. + + + -a + Lists all of the current resource limits. + + -b + Socket buffer size in bytes (N.B. not kilobytes) + + -c + 512-byte blocks on the size of core dumps. + + -d + Kilobytes on the size of the data segment. + + -f + 512-byte blocks on the size of files written. + + -i + The number of pending signals. + + -k + The number of kqueues allocated. + + -l + Kilobytes on the size of locked-in memory. + + -m + Kilobytes on the size of physical memory. + + -n + open file descriptors. + + -p + The number of pseudo-terminals. + + -q + Bytes in POSIX message queues. + + -r + Maximum real time priority. On some systems where this is + not available, such as NetBSD, this has the same effect as -T + for compatibility with sh. + + -s + Kilobytes on the size of the stack. + + -T + The number of simultaneous threads available to the user. + + -t + CPU seconds to be used. + + -u + The number of processes available to the user. + + -v + Kilobytes on the size of virtual memory. On some systems this + refers to the limit called `address space'. + + -w + Kilobytes on the size of swapped out memory. + + -x + The number of locks on files. + + A resource may also be specified by integer in the form `-N + RESOURCE', where RESOURCE corresponds to the integer defined for + the resource by the operating system. This may be used to set the + limits for resources known to the shell which do not correspond to + option letters. Such limits will be shown by number in the output + of `ulimit -a'. + + The number may alternatively be out of the range of limits + compiled into the shell. The shell will try to read or write the + limit anyway, and will report an error if this fails. + +umask [ -S ] [ MASK ] + The umask is set to MASK. MASK can be either an octal number or a + symbolic value as described in man page chmod(1). If MASK is + omitted, the current value is printed. The -S option causes the + mask to be printed as a symbolic value. Otherwise, the mask is + printed as an octal number. Note that in the symbolic form the + permissions you specify are those which are to be allowed (not + denied) to the users specified. + +unalias [ -ams ] NAME ... + Removes aliases. This command works the same as unhash -a, except + that the -a option removes all regular or global aliases, or with + -s all suffix aliases: in this case no NAME arguments may appear. + The options -m (remove by pattern) and -s without -a (remove + listed suffix aliases) behave as for unhash -a. Note that the + meaning of -a is different between unalias and unhash. + +unfunction + Same as unhash -f. + +unhash [ -adfms ] NAME ... + Remove the element named NAME from an internal hash table. The + default is remove elements from the command hash table. The -a + option causes unhash to remove regular or global aliases; note + when removing a global aliases that the argument must be quoted to + prevent it from being expanded before being passed to the command. + The -s option causes unhash to remove suffix aliases. The -f + option causes unhash to remove shell functions. The -d options + causes unhash to remove named directories. If the -m flag is given + the arguments are taken as patterns (should be quoted) and all + elements of the corresponding hash table with matching names will + be removed. + +unlimit [ -hs ] RESOURCE ... + The resource limit for each RESOURCE is set to the hard limit. If + the -h flag is given and the shell has appropriate privileges, the + hard resource limit for each RESOURCE is removed. The resources + of the shell process are only changed if the -s flag is given. + + The unlimit command is not made available by default when the + shell starts in a mode emulating another shell. It can be made + available with the command `zmodload -F zsh/rlimits b:unlimit'. + +unset [ -fmv ] NAME ... + Each named parameter is unset. Local parameters remain local even + if unset; they appear unset within scope, but the previous value + will still reappear when the scope ends. + + Individual elements of associative array parameters may be unset + by using subscript syntax on NAME, which should be quoted (or the + entire command prefixed with noglob) to protect the subscript from + filename generation. + + If the -m flag is specified the arguments are taken as patterns + (should be quoted) and all parameters with matching names are + unset. Note that this cannot be used when unsetting associative + array elements, as the subscript will be treated as part of the + pattern. + + The -v flag specifies that NAME refers to parameters. This is the + default behaviour. + + unset -f is equivalent to unfunction. + +unsetopt [ {+|-}OPTIONS | {+|-}o OPTION_NAME ] [ NAME ... ] + Unset the options for the shell. All options specified either + with flags or by name are unset. If no arguments are supplied, + the names of all options currently unset are printed. If the -m + flag is given the arguments are taken as patterns (which should be + quoted to preserve them from being interpreted as glob patterns), + and all options with names matching these patterns are unset. + +vared + See *Note Zle Builtins::. + +wait [ JOB ... ] + Wait for the specified jobs or processes. If JOB is not given + then all currently active child processes are waited for. Each + JOB can be either a job specification or the process ID of a job + in the job table. The exit status from this command is that of + the job waited for. If JOB represents an unknown job or process + ID, a warning is printed (unless the POSIX_BUILTINS option is set) + and the exit status is 127. + + It is possible to wait for recent processes (specified by process + ID, not by job) that were running in the background even if the + process has exited. Typically the process ID will be recorded by + capturing the value of the variable $! immediately after the + process has been started. There is a limit on the number of + process IDs remembered by the shell; this is given by the value of + the system configuration parameter CHILD_MAX. When this limit is + reached, older process IDs are discarded, least recently started + processes first. + + Note there is no protection against the process ID wrapping, i.e. + if the wait is not executed soon enough there is a chance the + process waited for is the wrong one. A conflict implies both + process IDs have been generated by the shell, as other processes + are not recorded, and that the user is potentially interested in + both, so this problem is intrinsic to process IDs. + +whence [ -vcwfpamsS ] [ -x NUM ] NAME ... + For each NAME, indicate how it would be interpreted if used as a + command name. + + If NAME is not an alias, built-in command, external command, shell + function, hashed command, or a reserved word, the exit status + shall be non-zero, and -- if -v, -c, or -w was passed -- a message + will be written to standard output. (This is different from other + shells that write that message to standard error.) + + whence is most useful when NAME is only the last path component of + a command, i.e. does not include a `/'; in particular, pattern + matching only succeeds if just the non-directory component of the + command is passed. + + + -v + Produce a more verbose report. + + -c + Print the results in a `csh'-like format. This takes + precedence over -v. + + -w + For each NAME, print `NAME: WORD' where WORD is one of alias, + builtin, command, function, hashed, reserved or none, + according as NAME corresponds to an alias, a built-in + command, an external command, a shell function, a command + defined with the hash builtin, a reserved word, or is not + recognised. This takes precedence over -v and -c. + + -f + Causes the contents of a shell function to be displayed, + which would otherwise not happen unless the -c flag were used. + + -p + Do a path search for NAME even if it is an alias, reserved + word, shell function or builtin. + + -a + Do a search for all occurrences of NAME throughout the + command path. Normally only the first occurrence is printed. + + -m + The arguments are taken as patterns (pattern characters + should be quoted), and the information is displayed for each + command matching one of these patterns. + + -s + If a pathname contains symlinks, print the symlink-free + pathname as well. + + -S + As -s, but if the pathname had to be resolved by following + multiple symlinks, the intermediate steps are printed, too. + The symlink resolved at each step might be anywhere in the + path. + + -x NUM + Expand tabs when outputting shell functions using the -c + option. This has the same effect as the -x option to the + functions builtin. + + +where [ -wpmsS ] [ -x NUM ] NAME ... + Equivalent to whence -ca. + +which [ -wpamsS ] [ -x NUM ] NAME ... + Equivalent to whence -c. + +zcompile [ -U ] [ -z | -k ] [ -R | -M ] FILE [ NAME ... ] +zcompile -ca [ -m ] [ -R | -M ] FILE [ NAME ... ] +zcompile -t FILE [ NAME ... ] + This builtin command can be used to compile functions or scripts, + storing the compiled form in a file, and to examine files + containing the compiled form. This allows faster autoloading of + functions and sourcing of scripts by avoiding parsing of the text + when the files are read. + + The first form (without the -c, -a or -t options) creates a + compiled file. If only the FILE argument is given, the output + file has the name `FILE.zwc' and will be placed in the same + directory as the FILE. The shell will load the compiled file + instead of the normal function file when the function is + autoloaded; see *Note Functions:: for a description of how + autoloaded functions are searched. The extension .zwc stands for + `zsh word code'. + + If there is at least one NAME argument, all the named files are + compiled into the output FILE given as the first argument. If + FILE does not end in .zwc, this extension is automatically + appended. Files containing multiple compiled functions are called + `digest' files, and are intended to be used as elements of the + FPATH/fpath special array. + + The second form, with the -c or -a options, writes the compiled + definitions for all the named functions into FILE. For -c, the + names must be functions currently defined in the shell, not those + marked for autoloading. Undefined functions that are marked for + autoloading may be written by using the -a option, in which case + the fpath is searched and the contents of the definition files for + those functions, if found, are compiled into FILE. If both -c and + -a are given, names of both defined functions and functions marked + for autoloading may be given. In either case, the functions in + files written with the -c or -a option will be autoloaded as if the + KSH_AUTOLOAD option were unset. + + The reason for handling loaded and not-yet-loaded functions with + different options is that some definition files for autoloading + define multiple functions, including the function with the same + name as the file, and, at the end, call that function. In such + cases the output of `zcompile -c' does not include the additional + functions defined in the file, and any other initialization code + in the file is lost. Using `zcompile -a' captures all this extra + information. + + If the -m option is combined with -c or -a, the NAMEs are used as + patterns and all functions whose names match one of these patterns + will be written. If no NAME is given, the definitions of all + functions currently defined or marked as autoloaded will be + written. + + Note the second form cannot be used for compiling functions that + include redirections as part of the definition rather than within + the body of the function; for example + + + fn1() { { ... } >~/logfile } + + can be compiled but + + + fn1() { ... } >~/logfile + + cannot. It is possible to use the first form of zcompile to + compile autoloadable functions that include the full function + definition instead of just the body of the function. + + The third form, with the -t option, examines an existing compiled + file. Without further arguments, the names of the original files + compiled into it are listed. The first line of output shows the + version of the shell which compiled the file and how the file will + be used (i.e. by reading it directly or by mapping it into memory). + With arguments, nothing is output and the return status is set to + zero if definitions for _all_ NAMEs were found in the compiled + file, and non-zero if the definition for at least one NAME was not + found. + + Other options: + + + -U + Aliases are not expanded when compiling the NAMEd files. + + -R + When the compiled file is read, its contents are copied into + the shell's memory, rather than memory-mapped (see -M). This + happens automatically on systems that do not support memory + mapping. + + When compiling scripts instead of autoloadable functions, it + is often desirable to use this option; otherwise the whole + file, including the code to define functions which have + already been defined, will remain mapped, consequently + wasting memory. + + -M + The compiled file is mapped into the shell's memory when + read. This is done in such a way that multiple instances of + the shell running on the same host will share this mapped + file. If neither -R nor -M is given, the zcompile builtin + decides what to do based on the size of the compiled file. + + -k + -z + These options are used when the compiled file contains + functions which are to be autoloaded. If -z is given, the + function will be autoloaded as if the KSH_AUTOLOAD option is + _not_ set, even if it is set at the time the compiled file is + read, while if the -k is given, the function will be loaded + as if KSH_AUTOLOAD _is_ set. These options also take + precedence over any -k or -z options specified to the + autoload builtin. If neither of these options is given, the + function will be loaded as determined by the setting of the + KSH_AUTOLOAD option at the time the compiled file is read. + + These options may also appear as many times as necessary + between the listed NAMEs to specify the loading style of all + following functions, up to the next -k or -z. + + + The created file always contains two versions of the compiled + format, one for big-endian machines and one for small-endian + machines. The upshot of this is that the compiled file is machine + independent and if it is read or mapped, only one half of the file + is actually used (and mapped). + +zformat + See *Note The zsh/zutil Module::. + +zftp + See *Note The zsh/zftp Module::. + +zle + See *Note Zle Builtins::. + +zmodload [ -dL ] [ -s ] [ ... ] +zmodload -F [ -alLme -P PARAM ] MODULE [ [+-]FEATURE ... ] +zmodload -e [ -A ] [ ... ] +zmodload [ -a [ -bcpf [ -I ] ] ] [ -iL ] ... +zmodload -u [ -abcdpf [ -I ] ] [ -iL ] ... +zmodload -A [ -L ] [ MODALIAS[=MODULE] ... ] +zmodload -R MODALIAS ... + Performs operations relating to zsh's loadable modules. Loading + of modules while the shell is running (`dynamical loading') is not + available on all operating systems, or on all installations on a + particular operating system, although the zmodload command itself + is always available and can be used to manipulate modules built + into versions of the shell executable without dynamical loading. + + Without arguments the names of all currently loaded binary modules + are printed. The -L option causes this list to be in the form of a + series of zmodload commands. Forms with arguments are: + + + zmodload [ -is ] NAME ... + zmodload -u [ -i ] NAME ... + In the simplest case, zmodload loads a binary module. The + module must be in a file with a name consisting of the + specified NAME followed by a standard suffix, usually `.so' + (`.sl' on HPUX). If the module to be loaded is already + loaded the duplicate module is ignored. If zmodload detects + an inconsistency, such as an invalid module name or circular + dependency list, the current code block is aborted. If it is + available, the module is loaded if necessary, while if it is + not available, non-zero status is silently returned. The + option -i is accepted for compatibility but has no effect. + + The NAMEd module is searched for in the same way a command + is, using $module_path instead of $path. However, the path + search is performed even when the module name contains a `/', + which it usually does. There is no way to prevent the path + search. + + If the module supports features (see below), zmodload tries to + enable all features when loading a module. If the module was + successfully loaded but not all features could be enabled, + zmodload returns status 2. + + If the option -s is given, no error is printed if the module + was not available (though other errors indicating a problem + with the module are printed). The return status indicates if + the module was loaded. This is appropriate if the caller + considers the module optional. + + With -u, zmodload unloads modules. The same NAME must be + given that was given when the module was loaded, but it is not + necessary for the module to exist in the file system. The -i + option suppresses the error if the module is already unloaded + (or was never loaded). + + Each module has a boot and a cleanup function. The module + will not be loaded if its boot function fails. Similarly a + module can only be unloaded if its cleanup function runs + successfully. + + zmodload -F [ -almLe -P PARAM ] MODULE [ [+-]FEATURE ... ] + zmodload -F allows more selective control over the features + provided by modules. With no options apart from -F, the + module named MODULE is loaded, if it was not already loaded, + and the list of FEATUREs is set to the required state. If no + FEATUREs are specified, the module is loaded, if it was not + already loaded, but the state of features is unchanged. Each + feature may be preceded by a + to turn the feature on, or - + to turn it off; the + is assumed if neither character is + present. Any feature not explicitly mentioned is left in its + current state; if the module was not previously loaded this + means any such features will remain disabled. The return + status is zero if all features were set, 1 if the module + failed to load, and 2 if some features could not be set (for + example, a parameter couldn't be added because there was a + different parameter of the same name) but the module was + loaded. + + The standard features are builtins, conditions, parameters + and math functions; these are indicated by the prefix `b:', + `c:' (`C:' for an infix condition), `p:' and `f:', + respectively, followed by the name that the corresponding + feature would have in the shell. For example, `b:strftime' + indicates a builtin named strftime and p:EPOCHSECONDS + indicates a parameter named EPOCHSECONDS. The module may + provide other (`abstract') features of its own as indicated + by its documentation; these have no prefix. + + With -l or -L, features provided by the module are listed. + With -l alone, a list of features together with their states + is shown, one feature per line. With -L alone, a zmodload -F + command that would cause enabled features of the module to be + turned on is shown. With -lL, a zmodload -F command that + would cause all the features to be set to their current state + is shown. If one of these combinations is given with the + option -P PARAM then the parameter PARAM is set to an array + of features, either features together with their state or (if + -L alone is given) enabled features. + + With the option -L the module name may be omitted; then a list + of all enabled features for all modules providing features is + printed in the form of zmodload -F commands. If -l is also + given, the state of both enabled and disabled features is + output in that form. + + A set of features may be provided together with -l or -L and a + module name; in that case only the state of those features is + considered. Each feature may be preceded by + or - but the + character has no effect. If no set of features is provided, + all features are considered. + + With -e, the command first tests that the module is loaded; + if it is not, status 1 is returned. If the module is loaded, + the list of features given as an argument is examined. Any + feature given with no prefix is simply tested to see if the + module provides it; any feature given with a prefix + or - is + tested to see if is provided and in the given state. If the + tests on all features in the list succeed, status 0 is + returned, else status 1. + + With -m, each entry in the given list of features is taken as + a pattern to be matched against the list of features provided + by the module. An initial + or - must be given explicitly. + This may not be combined with the -a option as autoloads must + be specified explicitly. + + With -a, the given list of features is marked for autoload + from the specified module, which may not yet be loaded. An + optional + may appear before the feature name. If the + feature is prefixed with -, any existing autoload is removed. + The options -l and -L may be used to list autoloads. + Autoloading is specific to individual features; when the + module is loaded only the requested feature is enabled. + Autoload requests are preserved if the module is subsequently + unloaded until an explicit `zmodload -Fa MODULE -FEATURE' is + issued. It is not an error to request an autoload for a + feature of a module that is already loaded. + + When the module is loaded each autoload is checked against + the features actually provided by the module; if the feature + is not provided the autoload request is deleted. A warning + message is output; if the module is being loaded to provide a + different feature, and that autoload is successful, there is + no effect on the status of the current command. If the + module is already loaded at the time when zmodload -Fa is + run, an error message is printed and status 1 returned. + + zmodload -Fa can be used with the -l, -L, -e and -P options + for listing and testing the existence of autoloadable + features. In this case -l is ignored if -L is specified. + zmodload -FaL with no module name lists autoloads for all + modules. + + Note that only standard features as described above can be + autoloaded; other features require the module to be loaded + before enabling. + + zmodload -d [ -L ] [ NAME ] + zmodload -d NAME DEP ... + zmodload -ud NAME [ DEP ... ] + The -d option can be used to specify module dependencies. + The modules named in the second and subsequent arguments will + be loaded before the module named in the first argument. + + With -d and one argument, all dependencies for that module + are listed. With -d and no arguments, all module + dependencies are listed. This listing is by default in a + Makefile-like format. The -L option changes this format to a + list of zmodload -d commands. + + If -d and -u are both used, dependencies are removed. If + only one argument is given, all dependencies for that module + are removed. + + zmodload -ab [ -L ] + zmodload -ab [ -i ] NAME [ BUILTIN ... ] + zmodload -ub [ -i ] BUILTIN ... + The -ab option defines autoloaded builtins. It defines the + specified BUILTINs. When any of those builtins is called, + the module specified in the first argument is loaded and all + its features are enabled (for selective control of features + use `zmodload -F -a' as described above). If only the NAME + is given, one builtin is defined, with the same name as the + module. -i suppresses the error if the builtin is already + defined or autoloaded, but not if another builtin of the same + name is already defined. + + With -ab and no arguments, all autoloaded builtins are + listed, with the module name (if different) shown in + parentheses after the builtin name. The -L option changes + this format to a list of zmodload -a commands. + + If -b is used together with the -u option, it removes builtins + previously defined with -ab. This is only possible if the + builtin is not yet loaded. -i suppresses the error if the + builtin is already removed (or never existed). + + Autoload requests are retained if the module is subsequently + unloaded until an explicit `zmodload -ub BUILTIN' is issued. + + zmodload -ac [ -IL ] + zmodload -ac [ -iI ] NAME [ COND ... ] + zmodload -uc [ -iI ] COND ... + The -ac option is used to define autoloaded condition codes. + The COND strings give the names of the conditions defined by + the module. The optional -I option is used to define infix + condition names. Without this option prefix condition names + are defined. + + If given no condition names, all defined names are listed (as + a series of zmodload commands if the -L option is given). + + The -uc option removes definitions for autoloaded conditions. + + zmodload -ap [ -L ] + zmodload -ap [ -i ] NAME [ PARAMETER ... ] + zmodload -up [ -i ] PARAMETER ... + The -p option is like the -b and -c options, but makes + zmodload work on autoloaded parameters instead. + + zmodload -af [ -L ] + zmodload -af [ -i ] NAME [ FUNCTION ... ] + zmodload -uf [ -i ] FUNCTION ... + The -f option is like the -b, -p, and -c options, but makes + zmodload work on autoloaded math functions instead. + + zmodload -a [ -L ] + zmodload -a [ -i ] NAME [ BUILTIN ... ] + zmodload -ua [ -i ] BUILTIN ... + Equivalent to -ab and -ub. + + zmodload -e [ -A ] [ STRING ... ] + The -e option without arguments lists all loaded modules; if + the -A option is also given, module aliases corresponding to + loaded modules are also shown. If arguments are provided, + nothing is printed; the return status is set to zero if all + STRINGs given as arguments are names of loaded modules and to + one if at least on STRING is not the name of a loaded module. + This can be used to test for the availability of things + implemented by modules. In this case, any aliases are + automatically resolved and the -A flag is not used. + + zmodload -A [ -L ] [ MODALIAS[=MODULE] ... ] + For each argument, if both MODALIAS and MODULE are given, + define MODALIAS to be an alias for the module MODULE. If the + module MODALIAS is ever subsequently requested, either via a + call to zmodload or implicitly, the shell will attempt to load + MODULE instead. If MODULE is not given, show the definition + of MODALIAS. If no arguments are given, list all defined + module aliases. When listing, if the -L flag was also given, + list the definition as a zmodload command to recreate the + alias. + + The existence of aliases for modules is completely + independent of whether the name resolved is actually loaded + as a module: while the alias exists, loading and unloading + the module under any alias has exactly the same effect as + using the resolved name, and does not affect the connection + between the alias and the resolved name which can be removed + either by zmodload -R or by redefining the alias. Chains of + aliases (i.e. where the first resolved name is itself an + alias) are valid so long as these are not circular. As the + aliases take the same format as module names, they may + include path separators: in this case, there is no + requirement for any part of the path named to exist as the + alias will be resolved first. For example, `any/old/alias' + is always a valid alias. + + Dependencies added to aliased modules are actually added to + the resolved module; these remain if the alias is removed. + It is valid to create an alias whose name is one of the + standard shell modules and which resolves to a different + module. However, if a module has dependencies, it will not + be possible to use the module name as an alias as the module + will already be marked as a loadable module in its own right. + + Apart from the above, aliases can be used in the zmodload + command anywhere module names are required. However, aliases + will not be shown in lists of loaded modules with a bare + `zmodload'. + + zmodload -R MODALIAS ... + For each MODALIAS argument that was previously defined as a + module alias via zmodload -A, delete the alias. If any was + not defined, an error is caused and the remainder of the line + is ignored. + + + Note that zsh makes no distinction between modules that were linked + into the shell and modules that are loaded dynamically. In both + cases this builtin command has to be used to make available the + builtins and other things defined by modules (unless the module is + autoloaded on these definitions). This is true even for systems + that don't support dynamic loading of modules. + +zparseopts + See *Note The zsh/zutil Module::. + +zprof + See *Note The zsh/zprof Module::. + +zpty + See *Note The zsh/zpty Module::. + +zregexparse + See *Note The zsh/zutil Module::. + +zsocket + See *Note The zsh/net/socket Module::. + +zstyle + See *Note The zsh/zutil Module::. + +ztcp + See *Note The zsh/net/tcp Module::. + + + +File: zsh.info, Node: Zsh Line Editor, Next: Completion Widgets, Prev: Shell Builtin Commands, Up: Top + +18 Zsh Line Editor +****************** + + + +18.1 Description +================ + +If the ZLE option is set (which it is by default in interactive shells) +and the shell input is attached to the terminal, the user is able to +edit command lines. + +There are two display modes. The first, multiline mode, is the +default. It only works if the TERM parameter is set to a valid +terminal type that can move the cursor up. The second, single line +mode, is used if TERM is invalid or incapable of moving the cursor up, +or if the SINGLE_LINE_ZLE option is set. This mode is similar to +`ksh', and uses no termcap sequences. If TERM is "emacs", the ZLE +option will be unset by default. + +The parameters BAUD, COLUMNS, and LINES are also used by the line +editor. See *Note Parameters Used By The Shell::. + +The parameter zle_highlight is also used by the line editor; see *Note +Character Highlighting::. Highlighting of special characters and the +region between the cursor and the mark (as set with set-mark-command in +Emacs mode, or by visual-mode in Vi mode) is enabled by default; +consult this reference for more information. Irascible conservatives +will wish to know that all highlighting may be disabled by the +following setting: + + + zle_highlight=(none) + +In many places, references are made to the numeric argument. This can +by default be entered in emacs mode by holding the alt key and typing a +number, or pressing escape before each digit, and in vi command mode by +typing the number before entering a command. Generally the numeric +argument causes the next command entered to be repeated the specified +number of times, unless otherwise noted below; this is implemented by +the digit-argument widget. See also *Note Arguments:: for some other +ways the numeric argument can be modified. + + + +* Menu: + +* Keymaps:: +* Zle Builtins:: +* Zle Widgets:: +* Character Highlighting:: + + + +File: zsh.info, Node: Keymaps, Next: Zle Builtins, Up: Zsh Line Editor + +18.2 Keymaps +============ + +A keymap in ZLE contains a set of bindings between key sequences and +ZLE commands. The empty key sequence cannot be bound. + +There can be any number of keymaps at any time, and each keymap has one +or more names. If all of a keymap's names are deleted, it disappears. bindkey +can be used to manipulate keymap names. + +Initially, there are eight keymaps: + + +emacs + EMACS emulation + +viins + vi emulation - insert mode + +vicmd + vi emulation - command mode + +viopp + vi emulation - operator pending + +visual + vi emulation - selection active + +isearch + incremental search mode + +command + read a command name + +.safe + fallback keymap + +The `.safe' keymap is special. It can never be altered, and the name +can never be removed. However, it can be linked to other names, which +can be removed. In the future other special keymaps may be added; +users should avoid using names beginning with `.' for their own keymaps. + +In addition to these names, either `emacs' or `viins' is also linked to +the name `main'. If one of the VISUAL or EDITOR environment variables +contain the string `vi' when the shell starts up then it will be +`viins', otherwise it will be `emacs'. bindkey's -e and -v options +provide a convenient way to override this default choice. + +When the editor starts up, it will select the `main' keymap. If that +keymap doesn't exist, it will use `.safe' instead. + +In the `.safe' keymap, each single key is bound to self-insert, except +for ^J (line feed) and ^M (return) which are bound to accept-line. +This is deliberately not pleasant to use; if you are using it, it means +you deleted the main keymap, and you should put it back. + +18.2.1 Reading Commands +----------------------- + +When ZLE is reading a command from the terminal, it may read a sequence +that is bound to some command and is also a prefix of a longer bound +string. In this case ZLE will wait a certain time to see if more +characters are typed, and if not (or they don't match any longer +string) it will execute the binding. This timeout is defined by the +KEYTIMEOUT parameter; its default is 0.4 sec. There is no timeout if +the prefix string is not itself bound to a command. + +The key timeout is also applied when ZLE is reading the bytes from a +multibyte character string when it is in the appropriate mode. (This +requires that the shell was compiled with multibyte mode enabled; +typically also the locale has characters with the UTF-8 encoding, +although any multibyte encoding known to the operating system is +supported.) If the second or a subsequent byte is not read within the +timeout period, the shell acts as if ? were typed and resets the input +state. + +As well as ZLE commands, key sequences can be bound to other strings, +by using `bindkey -s'. When such a sequence is read, the replacement +string is pushed back as input, and the command reading process starts +again using these fake keystrokes. This input can itself invoke +further replacement strings, but in order to detect loops the process +will be stopped if there are twenty such replacements without a real +command being read. + +A key sequence typed by the user can be turned into a command name for +use in user-defined widgets with the read-command widget, described in +*Note Miscellaneous:: below. + +18.2.2 Local Keymaps +-------------------- + +While for normal editing a single keymap is used exclusively, in many +modes a local keymap allows for some keys to be customised. For example, +in an incremental search mode, a binding in the isearch keymap will +override a binding in the main keymap but all keys that are not +overridden can still be used. + +If a key sequence is defined in a local keymap, it will hide a key +sequence in the global keymap that is a prefix of that sequence. An +example of this occurs with the binding of iw in viopp as this hides +the binding of i in vicmd. However, a longer sequence in the global +keymap that shares the same prefix can still apply so for example the +binding of ^Xa in the global keymap will be unaffected by the binding +of ^Xb in the local keymap. + + + + +File: zsh.info, Node: Zle Builtins, Next: Zle Widgets, Prev: Keymaps, Up: Zsh Line Editor + +18.3 Zle Builtins +================= + +The ZLE module contains three related builtin commands. The bindkey +command manipulates keymaps and key bindings; the vared command invokes +ZLE on the value of a shell parameter; and the zle command manipulates +editing widgets and allows command line access to ZLE commands from +within shell functions. + + +bindkey [ OPTIONS ] -l [ -L ] [ KEYMAP ... ] +bindkey [ OPTIONS ] -d +bindkey [ OPTIONS ] -D KEYMAP ... +bindkey [ OPTIONS ] -A OLD-KEYMAP NEW-KEYMAP +bindkey [ OPTIONS ] -N NEW-KEYMAP [ OLD-KEYMAP ] +bindkey [ OPTIONS ] -m +bindkey [ OPTIONS ] -r IN-STRING ... +bindkey [ OPTIONS ] -s IN-STRING OUT-STRING ... +bindkey [ OPTIONS ] IN-STRING COMMAND ... +bindkey [ OPTIONS ] [ IN-STRING ] + bindkey's options can be divided into three categories: keymap + selection for the current command, operation selection, and + others. The keymap selection options are: + + + -e + Selects keymap `emacs' for any operations by the current + command, and also links `emacs' to `main' so that it is + selected by default the next time the editor starts. + + -v + Selects keymap `viins' for any operations by the current + command, and also links `viins' to `main' so that it is + selected by default the next time the editor starts. + + -a + Selects keymap `vicmd' for any operations by the current + command. + + -M KEYMAP + The KEYMAP specifies a keymap name that is selected for any + operations by the current command. + + + If a keymap selection is required and none of the options above + are used, the `main' keymap is used. Some operations do not + permit a keymap to be selected, namely: + + + -l + List all existing keymap names; if any arguments are given, + list just those keymaps. + + If the -L option is also used, list in the form of bindkey + commands to create or link the keymaps. `bindkey -lL main' + shows which keymap is linked to `main', if any, and hence if + the standard emacs or vi emulation is in effect. This option + does not show the .safe keymap because it cannot be created + in that fashion; however, neither is `bindkey -lL .safe' + reported as an error, it simply outputs nothing. + + -d + Delete all existing keymaps and reset to the default state. + + -D KEYMAP ... + Delete the named KEYMAPs. + + -A OLD-KEYMAP NEW-KEYMAP + Make the NEW-KEYMAP name an alias for OLD-KEYMAP, so that + both names refer to the same keymap. The names have equal + standing; if either is deleted, the other remains. If there + is already a keymap with the NEW-KEYMAP name, it is deleted. + + -N NEW-KEYMAP [ OLD-KEYMAP ] + Create a new keymap, named NEW-KEYMAP. If a keymap already + has that name, it is deleted. If an OLD-KEYMAP name is + given, the new keymap is initialized to be a duplicate of it, + otherwise the new keymap will be empty. + + + To use a newly created keymap, it should be linked to main. Hence + the sequence of commands to create and use a new keymap `mymap' + initialized from the emacs keymap (which remains unchanged) is: + + + bindkey -N mymap emacs + bindkey -A mymap main + + Note that while `bindkey -A NEWMAP main' will work when NEWMAP is + emacs or viins, it will not work for vicmd, as switching from vi + insert to command mode becomes impossible. + + The following operations act on the `main' keymap if no keymap + selection option was given: + + + -m + Add the built-in set of meta-key bindings to the selected + keymap. Only keys that are unbound or bound to self-insert + are affected. + + -r IN-STRING ... + Unbind the specified IN-STRINGs in the selected keymap. This + is exactly equivalent to binding the strings to undefined-key. + + When -R is also used, interpret the IN-STRINGs as ranges. + + When -p is also used, the IN-STRINGs specify prefixes. Any + binding that has the given IN-STRING as a prefix, not + including the binding for the IN-STRING itself, if any, will + be removed. For example, + + + bindkey -rpM viins '^[' + + will remove all bindings in the vi-insert keymap beginning + with an escape character (probably cursor keys), but leave + the binding for the escape character itself (probably + vi-cmd-mode). This is incompatible with the option -R. + + -s IN-STRING OUT-STRING ... + Bind each IN-STRING to each OUT-STRING. When IN-STRING is + typed, OUT-STRING will be pushed back and treated as input to + the line editor. When -R is also used, interpret the + IN-STRINGs as ranges. + + Note that both IN-STRING and OUT-STRING are subject to the + same form of interpretation, as described below. + + IN-STRING COMMAND ... + Bind each IN-STRING to each COMMAND. When -R is used, + interpret the IN-STRINGs as ranges. + + [ IN-STRING ] + List key bindings. If an IN-STRING is specified, the binding + of that string in the selected keymap is displayed. + Otherwise, all key bindings in the selected keymap are + displayed. (As a special case, if the -e or -v option is + used alone, the keymap is _not_ displayed - the implicit + linking of keymaps is the only thing that happens.) + + When the option -p is used, the IN-STRING must be present. + The listing shows all bindings which have the given key + sequence as a prefix, not including any bindings for the key + sequence itself. + + When the -L option is used, the list is in the form of bindkey + commands to create the key bindings. + + + When the -R option is used as noted above, a valid range consists + of two characters, with an optional `-' between them. All + characters between the two specified, inclusive, are bound as + specified. + + For either IN-STRING or OUT-STRING, the following escape sequences + are recognised: + + + \a + bell character + + \b + backspace + + \e, \E + escape + + \f + form feed + + \n + linefeed (newline) + + \r + carriage return + + \t + horizontal tab + + \v + vertical tab + + \NNN + character code in octal + + \xNN + character code in hexadecimal + + \uNNNN + unicode character code in hexadecimal + + \UNNNNNNNN + unicode character code in hexadecimal + + \M[-]X + character with meta bit set + + \C[-]X + control character + + ^X + control character + + In all other cases, `\' escapes the following character. Delete is + written as `^?'. Note that `\M^?' and `^\M?' are not the same, + and that (unlike emacs), the bindings `\M-X' and `\eX' are + entirely distinct, although they are initialized to the same + bindings by `bindkey -m'. + +vared [ -Aacghe ] [ -p PROMPT ] [ -r RPROMPT ] + [ -M MAIN-KEYMAP ] [ -m VICMD-KEYMAP ] + [ -i INIT-WIDGET ] [ -f FINISH-WIDGET ] + [ -t TTY ] NAME + The value of the parameter NAME is loaded into the edit buffer, + and the line editor is invoked. When the editor exits, NAME is + set to the string value returned by the editor. When the -c flag + is given, the parameter is created if it doesn't already exist. + The -a flag may be given with -c to create an array parameter, or + the -A flag to create an associative array. If the type of an + existing parameter does not match the type to be created, the + parameter is unset and recreated. The -g flag may be given to + suppress warnings from the WARN_CREATE_GLOBAL and WARN_NESTED_VAR + options. + + If an array or array slice is being edited, separator characters + as defined in $IFS will be shown quoted with a backslash, as will + backslashes themselves. Conversely, when the edited text is split + into an array, a backslash quotes an immediately following + separator character or backslash; no other special handling of + backslashes, or any handling of quotes, is performed. + + Individual elements of existing array or associative array + parameters may be edited by using subscript syntax on NAME. New + elements are created automatically, even without -c. + + If the -p flag is given, the following string will be taken as the + prompt to display at the left. If the -r flag is given, the + following string gives the prompt to display at the right. If the + -h flag is specified, the history can be accessed from ZLE. If the + -e flag is given, typing ^D (Control-D) on an empty line causes + vared to exit immediately with a non-zero return value. + + The -M option gives a keymap to link to the main keymap during + editing, and the -m option gives a keymap to link to the vicmd + keymap during editing. For vi-style editing, this allows a pair + of keymaps to override viins and vicmd. For emacs-style editing, + only -M is normally needed but the -m option may still be used. + On exit, the previous keymaps will be restored. + + Vared calls the usual `zle-line-init' and `zle-line-finish' hooks + before and after it takes control. Using the -i and -f options, it + is possible to replace these with other custom widgets. + + If `-t TTY' is given, TTY is the name of a terminal device to be + used instead of the default /dev/tty. If TTY does not refer to a + terminal an error is reported. + +zle +zle -l [ -L | -a ] [ STRING ... ] +zle -D WIDGET ... +zle -A OLD-WIDGET NEW-WIDGET +zle -N WIDGET [ FUNCTION ] +zle -f FLAG [ FLAG... ] +zle -C WIDGET COMPLETION-WIDGET FUNCTION +zle -R [ -c ] [ DISPLAY-STRING ] [ STRING ... ] +zle -M STRING +zle -U STRING +zle -K KEYMAP +zle -F [ -L | -w ] [ FD [ HANDLER ] ] +zle -I +zle -T [ tc FUNCTION | -r tc | -L ] +zle WIDGET [ -n NUM ] [ -Nw ] [ -K KEYMAP ] ARGS ... + The zle builtin performs a number of different actions concerning + ZLE. + + With no options and no arguments, only the return status will be + set. It is zero if ZLE is currently active and widgets could be + invoked using this builtin command and non-zero otherwise. Note + that even if non-zero status is returned, zle may still be active + as part of the completion system; this does not allow direct calls + to ZLE widgets. + + Otherwise, which operation it performs depends on its options: + + + -l [ -L | -a ] [ STRING ] + List all existing user-defined widgets. If the -L option is + used, list in the form of zle commands to create the widgets. + + When combined with the -a option, all widget names are listed, + including the builtin ones. In this case the -L option is + ignored. + + If at least one STRING is given, and -a is present or -L is + not used, nothing will be printed. The return status will be + zero if all STRINGs are names of existing widgets and + non-zero if at least one STRING is not a name of a defined + widget. If -a is also present, all widget names are used for + the comparison including builtin widgets, else only + user-defined widgets are used. + + If at least one STRING is present and the -L option is used, + user-defined widgets matching any STRING are listed in the + form of zle commands to create the widgets. + + -D WIDGET ... + Delete the named WIDGETs. + + -A OLD-WIDGET NEW-WIDGET + Make the NEW-WIDGET name an alias for OLD-WIDGET, so that + both names refer to the same widget. The names have equal + standing; if either is deleted, the other remains. If there + is already a widget with the NEW-WIDGET name, it is deleted. + + -N WIDGET [ FUNCTION ] + Create a user-defined widget. If there is already a widget + with the specified name, it is overwritten. When the new + widget is invoked from within the editor, the specified shell + FUNCTION is called. If no function name is specified, it + defaults to the same name as the widget. For further + information, see *Note Zle Widgets::. + + -f FLAG [ FLAG... ] + Set various flags on the running widget. Possible values for + FLAG are: + + yank for indicating that the widget has yanked text into the + buffer. If the widget is wrapping an existing internal + widget, no further action is necessary, but if it has + inserted the text manually, then it should also take care to + set YANK_START and YANK_END correctly. yankbefore does the + same but is used when the yanked text appears after the + cursor. + + kill for indicating that text has been killed into the + cutbuffer. When repeatedly invoking a kill widget, text is + appended to the cutbuffer instead of replacing it, but when + wrapping such widgets, it is necessary to call `zle -f kill' + to retain this effect. + + vichange for indicating that the widget represents a vi + change that can be repeated as a whole with + `vi-repeat-change'. The flag should be set early in the + function before inspecting the value of NUMERIC or invoking + other widgets. This has no effect for a widget invoked from + insert mode. If insert mode is active when the widget + finishes, the change extends until next returning to command + mode. + + -C WIDGET COMPLETION-WIDGET FUNCTION + Create a user-defined completion widget named WIDGET. The + completion widget will behave like the built-in + completion-widget whose name is given as COMPLETION-WIDGET. + To generate the completions, the shell function FUNCTION will + be called. For further information, see *Note Completion + Widgets::. + + -R [ -c ] [ DISPLAY-STRING ] [ STRING ... ] + Redisplay the command line; this is to be called from within + a user-defined widget to allow changes to become visible. If + a DISPLAY-STRING is given and not empty, this is shown in the + status line (immediately below the line being edited). + + If the optional STRINGs are given they are listed below the + prompt in the same way as completion lists are printed. If no + STRINGs are given but the -c option is used such a list is + cleared. + + Note that this option is only useful for widgets that do not + exit immediately after using it because the strings displayed + will be erased immediately after return from the widget. + + This command can safely be called outside user defined + widgets; if zle is active, the display will be refreshed, + while if zle is not active, the command has no effect. In + this case there will usually be no other arguments. + + The status is zero if zle was active, else one. + + -M STRING + As with the -R option, the STRING will be displayed below the + command line; unlike the -R option, the string will not be + put into the status line but will instead be printed normally + below the prompt. This means that the STRING will still be + displayed after the widget returns (until it is overwritten + by subsequent commands). + + -U STRING + This pushes the characters in the STRING onto the input stack + of ZLE. After the widget currently executed finishes ZLE + will behave as if the characters in the STRING were typed by + the user. + + As ZLE uses a stack, if this option is used repeatedly the + last string pushed onto the stack will be processed first. + However, the characters in each STRING will be processed in + the order in which they appear in the string. + + -K KEYMAP + Selects the keymap named KEYMAP. An error message will be + displayed if there is no such keymap. + + This keymap selection affects the interpretation of following + keystrokes within this invocation of ZLE. Any following + invocation (e.g., the next command line) will start as usual + with the `main' keymap selected. + + -F [ -L | -w ] [ FD [ HANDLER ] ] + Only available if your system supports one of the `poll' or + `select' system calls; most modern systems do. + + Installs HANDLER (the name of a shell function) to handle + input from file descriptor FD. Installing a handler for an + FD which is already handled causes the existing handler to be + replaced. Any number of handlers for any number of readable + file descriptors may be installed. Note that zle makes no + attempt to check whether this FD is actually readable when + installing the handler. The user must make their own + arrangements for handling the file descriptor when zle is not + active. + + When zle is attempting to read data, it will examine both the + terminal and the list of handled FD's. If data becomes + available on a handled FD, zle calls HANDLER with the fd + which is ready for reading as the first argument. Under + normal circumstances this is the only argument, but if an + error was detected, a second argument provides details: `hup' + for a disconnect, `nval' for a closed or otherwise invalid + descriptor, or `err' for any other condition. Systems that + support only the `select' system call always use `err'. + + If the option -w is also given, the HANDLER is instead a line + editor widget, typically a shell function made into a widget + using `zle -N'. In that case HANDLER can use all the + facilities of zle to update the current editing line. Note, + however, that as handling FD takes place at a low level + changes to the display will not automatically appear; the + widget should call `zle -R' to force redisplay. As of this + writing, widget handlers only support a single argument and + thus are never passed a string for error state, so widgets + must be prepared to test the descriptor themselves. + + If either type of handler produces output to the terminal, it + should call `zle -I' before doing so (see below). Handlers + should not attempt to read from the terminal. + + If no HANDLER is given, but an FD is present, any handler for + that FD is removed. If there is none, an error message is + printed and status 1 is returned. + + If no arguments are given, or the -L option is supplied, a + list of handlers is printed in a form which can be stored for + later execution. + + An FD (but not a HANDLER) may optionally be given with the -L + option; in this case, the function will list the handler if + any, else silently return status 1. + + Note that this feature should be used with care. Activity on + one of the FD's which is not properly handled can cause the + terminal to become unusable. Removing an FD handler from + within a signal trap may cause unpredictable behavior. + + Here is a simple example of using this feature. A connection + to a remote TCP port is created using the ztcp command; see + *Note The zsh/net/tcp Module::. Then a handler is installed + which simply prints out any data which arrives on this + connection. Note that `select' will indicate that the file + descriptor needs handling if the remote side has closed the + connection; we handle that by testing for a failed read. + + + if ztcp pwspc 2811; then + tcpfd=$REPLY + handler() { + zle -I + local line + if ! read -r line <&$1; then + # select marks this fd if we reach EOF, + # so handle this specially. + print "[Read on fd $1 failed, removing.]" >&2 + zle -F $1 + return 1 + fi + print -r - $line + } + zle -F $tcpfd handler + fi + + -I + Unusually, this option is most useful outside ordinary widget + functions, though it may be used within if normal output to + the terminal is required. It invalidates the current zle + display in preparation for output; typically this will be + from a trap function. It has no effect if zle is not active. + When a trap exits, the shell checks to see if the display + needs restoring, hence the following will print output in + such a way as not to disturb the line being edited: + + + TRAPUSR1() { + # Invalidate zle display + [[ -o zle ]] && zle -I + # Show output + print Hello + } + + In general, the trap function may need to test whether zle is + active before using this method (as shown in the example), + since the zsh/zle module may not even be loaded; if it is + not, the command can be skipped. + + It is possible to call `zle -I' several times before control + is returned to the editor; the display will only be + invalidated the first time to minimise disruption. + + Note that there are normally better ways of manipulating the + display from within zle widgets; see, for example, `zle -R' + above. + + The returned status is zero if zle was invalidated, even + though this may have been by a previous call to `zle -I' or + by a system notification. To test if a zle widget may be + called at this point, execute zle with no arguments and + examine the return status. + + -T + This is used to add, list or remove internal transformations + on the processing performed by the line editor. It is + typically used only for debugging or testing and is therefore + of little interest to the general user. + + `zle -T TRANSFORMATION FUNC' specifies that the given + TRANSFORMATION (see below) is effected by shell function FUNC. + + `zle -Tr TRANSFORMATION' removes the given TRANSFORMATION if + it was present (it is not an error if none was). + + `zle -TL' can be used to list all transformations currently in + operation. + + Currently the only transformation is tc. This is used instead + of outputting termcap codes to the terminal. When the + transformation is in operation the shell function is passed + the termcap code that would be output as its first argument; + if the operation required a numeric argument, that is passed + as a second argument. The function should set the shell + variable REPLY to the transformed termcap code. Typically + this is used to produce some simply formatted version of the + code and optional argument for debugging or testing. Note + that this transformation is not applied to other non-printing + characters such as carriage returns and newlines. + + WIDGET [ -n NUM ] [ -Nw ] [ -K KEYMAP ] ARGS ... + Invoke the specified WIDGET. This can only be done when ZLE + is active; normally this will be within a user-defined widget. + + With the options -n and -N, the current numeric argument will + be saved and then restored after the call to WIDGET; `-n NUM' + sets the numeric argument temporarily to NUM, while `-N' sets + it to the default, i.e. as if there were none. + + With the option -K, KEYMAP will be used as the current keymap + during the execution of the widget. The previous keymap will + be restored when the widget exits. + + Normally, calling a widget in this way does not set the + special parameter WIDGET and related parameters, so that the + environment appears as if the top-level widget called by the + user were still active. With the option -w, WIDGET and + related parameters are set to reflect the widget being + executed by the zle call. + + Any further arguments will be passed to the widget; note that + as standard argument handling is performed, any general + argument list should be preceded by --. If it is a shell + function, these are passed down as positional parameters; for + builtin widgets it is up to the widget in question what it + does with them. Currently arguments are only handled by the + incremental-search commands, the history-search-forward and + -backward and the corresponding functions prefixed by vi-, + and by universal-argument. No error is flagged if the + command does not use the arguments, or only uses some of them. + + The return status reflects the success or failure of the + operation carried out by the widget, or if it is a + user-defined widget the return status of the shell function. + + A non-zero return status causes the shell to beep when the + widget exits, unless the BEEP options was unset or the widget + was called via the zle command. Thus if a user defined + widget requires an immediate beep, it should call the beep + widget directly. + + + + + +File: zsh.info, Node: Zle Widgets, Next: Character Highlighting, Prev: Zle Builtins, Up: Zsh Line Editor + +18.4 Widgets +============ + +All actions in the editor are performed by `widgets'. A widget's job is +simply to perform some small action. The ZLE commands that key +sequences in keymaps are bound to are in fact widgets. Widgets can be +user-defined or built in. + +The standard widgets built into ZLE are listed in Standard Widgets +below. Other built-in widgets can be defined by other modules (see +*Note Zsh Modules::). Each built-in widget has two names: its normal +canonical name, and the same name preceded by a `.'. The `.' name is +special: it can't be rebound to a different widget. This makes the +widget available even when its usual name has been redefined. + +User-defined widgets are defined using `zle -N', and implemented as +shell functions. When the widget is executed, the corresponding shell +function is executed, and can perform editing (or other) actions. It +is recommended that user-defined widgets should not have names starting +with `.'. + +18.5 User-Defined Widgets +========================= + +User-defined widgets, being implemented as shell functions, can execute +any normal shell command. They can also run other widgets (whether +built-in or user-defined) using the zle builtin command. The standard +input of the function is redirected from /dev/null to prevent external +commands from unintentionally blocking ZLE by reading from the +terminal, but read -k or read -q can be used to read characters. +Finally, they can examine and edit the ZLE buffer being edited by +reading and setting the special parameters described below. + +These special parameters are always available in widget functions, but +are not in any way special outside ZLE. If they have some normal value +outside ZLE, that value is temporarily inaccessible, but will return +when the widget function exits. These special parameters in fact have +local scope, like parameters created in a function using local. + +Inside completion widgets and traps called while ZLE is active, these +parameters are available read-only. + +Note that the parameters appear as local to any ZLE widget in which +they appear. Hence if it is desired to override them this needs to be +done within a nested function: + + + widget-function() { + # $WIDGET here refers to the special variable + # that is local inside widget-function + () { + # This anonymous nested function allows WIDGET + # to be used as a local variable. The -h + # removes the special status of the variable. + local -h WIDGET + } + } + + +BUFFER (scalar) + The entire contents of the edit buffer. If it is written to, the + cursor remains at the same offset, unless that would put it + outside the buffer. + +BUFFERLINES (integer) + The number of screen lines needed for the edit buffer currently + displayed on screen (i.e. without any changes to the preceding + parameters done after the last redisplay); read-only. + +CONTEXT (scalar) + The context in which zle was called to read a line; read-only. + One of the values: + + + start + The start of a command line (at prompt PS1). + + cont + A continuation to a command line (at prompt PS2). + + select + In a select loop (at prompt PS3). + + vared + Editing a variable in vared. + + +CURSOR (integer) + The offset of the cursor, within the edit buffer. This is in the + range 0 to $#BUFFER, and is by definition equal to $#LBUFFER. + Attempts to move the cursor outside the buffer will result in the + cursor being moved to the appropriate end of the buffer. + +CUTBUFFER (scalar) + The last item cut using one of the `kill-' commands; the string + which the next yank would insert in the line. Later entries in + the kill ring are in the array killring. Note that the command + `zle copy-region-as-kill STRING' can be used to set the text of + the cut buffer from a shell function and cycle the kill ring in + the same way as interactively killing text. + +HISTNO (integer) + The current history number. Setting this has the same effect as + moving up or down in the history to the corresponding history line. + An attempt to set it is ignored if the line is not stored in the + history. Note this is not the same as the parameter HISTCMD, + which always gives the number of the history line being added to + the main shell's history. HISTNO refers to the line being + retrieved within zle. + +ISEARCHMATCH_ACTIVE (integer) +ISEARCHMATCH_START (integer) +ISEARCHMATCH_END (integer) + ISEARCHMATCH_ACTIVE indicates whether a part of the BUFFER is + currently matched by an incremental search pattern. + ISEARCHMATCH_START and ISEARCHMATCH_END give the location of the + matched part and are in the same units as CURSOR. They are only + valid for reading when ISEARCHMATCH_ACTIVE is non-zero. + + All parameters are read-only. + +KEYMAP (scalar) + The name of the currently selected keymap; read-only. + +KEYS (scalar) + The keys typed to invoke this widget, as a literal string; + read-only. + +KEYS_QUEUED_COUNT (integer) + The number of bytes pushed back to the input queue and therefore + available for reading immediately before any I/O is done; + read-only. See also PENDING; the two values are distinct. + +killring (array) + The array of previously killed items, with the most recently + killed first. This gives the items that would be retrieved by a + yank-pop in the same order. Note, however, that the most recently + killed item is in $CUTBUFFER; $killring shows the array of + previous entries. + + The default size for the kill ring is eight, however the length + may be changed by normal array operations. Any empty string in + the kill ring is ignored by the yank-pop command, hence the size + of the array effectively sets the maximum length of the kill ring, + while the number of non-zero strings gives the current length, + both as seen by the user at the command line. + +LASTABORTEDSEARCH (scalar) + The last search string used by an interactive search that was + aborted by the user (status 3 returned by the search widget). + +LASTSEARCH (scalar) + The last search string used by an interactive search; read-only. + This is set even if the search failed (status 0, 1 or 2 returned + by the search widget), but not if it was aborted by the user. + +LASTWIDGET (scalar) + The name of the last widget that was executed; read-only. + +LBUFFER (scalar) + The part of the buffer that lies to the left of the cursor + position. If it is assigned to, only that part of the buffer is + replaced, and the cursor remains between the new $LBUFFER and the + old $RBUFFER. + +MARK (integer) + Like CURSOR, but for the mark. With vi-mode operators that wait for + a movement command to select a region of text, setting MARK allows + the selection to extend in both directions from the initial cursor + position. + +NUMERIC (integer) + The numeric argument. If no numeric argument was given, this + parameter is unset. When this is set inside a widget function, + builtin widgets called with the zle builtin command will use the + value assigned. If it is unset inside a widget function, builtin + widgets called behave as if no numeric argument was given. + +PENDING (integer) + The number of bytes pending for input, i.e. the number of bytes + which have already been typed and can immediately be read. On + systems where the shell is not able to get this information, this + parameter will always have a value of zero. Read-only. See also + KEYS_QUEUED_COUNT; the two values are distinct. + +PREBUFFER (scalar) + In a multi-line input at the secondary prompt, this read-only + parameter contains the contents of the lines before the one the + cursor is currently in. + +PREDISPLAY (scalar) + Text to be displayed before the start of the editable text buffer. + This does not have to be a complete line; to display a complete + line, a newline must be appended explicitly. The text is reset on + each new invocation (but not recursive invocation) of zle. + +POSTDISPLAY (scalar) + Text to be displayed after the end of the editable text buffer. + This does not have to be a complete line; to display a complete + line, a newline must be prepended explicitly. The text is reset + on each new invocation (but not recursive invocation) of zle. + +RBUFFER (scalar) + The part of the buffer that lies to the right of the cursor + position. If it is assigned to, only that part of the buffer is + replaced, and the cursor remains between the old $LBUFFER and the + new $RBUFFER. + +REGION_ACTIVE (integer) + Indicates if the region is currently active. It can be assigned 0 + or 1 to deactivate and activate the region respectively. A value + of 2 activates the region in line-wise mode with the highlighted + text extending for whole lines only; see *Note Character + Highlighting::. + +region_highlight (array) + Each element of this array may be set to a string that describes + highlighting for an arbitrary region of the command line that will + take effect the next time the command line is redisplayed. + Highlighting of the non-editable parts of the command line in + PREDISPLAY and POSTDISPLAY are possible, but note that the P flag + is needed for character indexing to include PREDISPLAY. + + Each string consists of the following parts: + + + * Optionally, a `P' to signify that the start and end offset + that follow include any string set by the PREDISPLAY special + parameter; this is needed if the predisplay string itself is + to be highlighted. Whitespace may follow the `P'. + + * A start offset in the same units as CURSOR, terminated by + whitespace. + + * An end offset in the same units as CURSOR, terminated by + whitespace. + + * A highlight specification in the same format as used for + contexts in the parameter zle_highlight, see *Note Character + Highlighting::; for example, standout or fg=red,bold. + + For example, + + + region_highlight=("P0 20 bold") + + specifies that the first twenty characters of the text including + any predisplay string should be highlighted in bold. + + Note that the effect of region_highlight is not saved and + disappears as soon as the line is accepted. + + The final highlighting on the command line depends on both + region_highlight and zle_highlight; see *Note Character + Highlighting:: for details. + +registers (associative array) + The contents of each of the vi register buffers. These are + typically set using vi-set-buffer followed by a delete, change or + yank command. + +SUFFIX_ACTIVE (integer) +SUFFIX_START (integer) +SUFFIX_END (integer) + SUFFIX_ACTIVE indicates whether an auto-removable completion suffix + is currently active. SUFFIX_START and SUFFIX_END give the location + of the suffix and are in the same units as CURSOR. They are only + valid for reading when SUFFIX_ACTIVE is non-zero. + + All parameters are read-only. + +UNDO_CHANGE_NO (integer) + A number representing the state of the undo history. The only use + of this is passing as an argument to the undo widget in order to + undo back to the recorded point. Read-only. + +UNDO_LIMIT_NO (integer) + A number corresponding to an existing change in the undo history; + compare UNDO_CHANGE_NO. If this is set to a value greater than + zero, the undo command will not allow the line to be undone beyond + the given change number. It is still possible to use `zle undo + CHANGE' in a widget to undo beyond that point; in that case, it + will not be possible to undo at all until UNDO_LIMIT_NO is + reduced. Set to 0 to disable the limit. + + A typical use of this variable in a widget function is as follows + (note the additional function scope is required): + + + () { + local UNDO_LIMIT_NO=$UNDO_CHANGE_NO + # Perform some form of recursive edit. + } + +WIDGET (scalar) + The name of the widget currently being executed; read-only. + +WIDGETFUNC (scalar) + The name of the shell function that implements a widget defined + with either zle -N or zle -C. In the former case, this is the + second argument to the zle -N command that defined the widget, or + the first argument if there was no second argument. In the latter + case this is the third argument to the zle -C command that defined + the widget. Read-only. + +WIDGETSTYLE (scalar) + Describes the implementation behind the completion widget + currently being executed; the second argument that followed zle -C + when the widget was defined. This is the name of a builtin + completion widget. For widgets defined with zle -N this is set to + the empty string. Read-only. + +YANK_ACTIVE (integer) +YANK_START (integer) +YANK_END (integer) + YANK_ACTIVE indicates whether text has just been yanked (pasted) + into the buffer. YANK_START and YANK_END give the location of the + pasted text and are in the same units as CURSOR. They are only + valid for reading when YANK_ACTIVE is non-zero. They can also be + assigned by widgets that insert text in a yank-like fashion, for + example wrappers of bracketed-paste. See also zle -f. + + YANK_ACTIVE is read-only. + +ZLE_RECURSIVE (integer) + Usually zero, but incremented inside any instance of + recursive-edit. Hence indicates the current recursion level. + + ZLE_RECURSIVE is read-only. + +ZLE_STATE (scalar) + Contains a set of space-separated words that describe the current + zle state. + + Currently, the states shown are the insert mode as set by the + overwrite-mode or vi-replace widgets and whether history commands + will visit imported entries as controlled by the set-local-history + widget. The string contains `insert' if characters to be inserted + on the command line move existing characters to the right or + `overwrite' if characters to be inserted overwrite existing + characters. It contains `localhistory' if only local history + commands will be visited or `globalhistory' if imported history + commands will also be visited. + + The substrings are sorted in alphabetical order so that if you + want to test for two specific substrings in a future-proof way, + you can do match by doing: + + + if [[ $ZLE_STATE == *globalhistory*insert* ]]; then ...; fi + + + +18.5.1 Special Widgets +---------------------- + +There are a few user-defined widgets which are special to the shell. +If they do not exist, no special action is taken. The environment +provided is identical to that for any other editing widget. + + +zle-isearch-exit + Executed at the end of incremental search at the point where the + isearch prompt is removed from the display. See + zle-isearch-update for an example. + +zle-isearch-update + Executed within incremental search when the display is about to be + redrawn. Additional output below the incremental search prompt + can be generated by using `zle -M' within the widget. For example, + + + zle-isearch-update() { zle -M "Line $HISTNO"; } + zle -N zle-isearch-update + + Note the line output by `zle -M' is not deleted on exit from + incremental search. This can be done from a zle-isearch-exit + widget: + + + zle-isearch-exit() { zle -M ""; } + zle -N zle-isearch-exit + +zle-line-pre-redraw + Executed whenever the input line is about to be redrawn, providing + an opportunity to update the region_highlight array. + +zle-line-init + Executed every time the line editor is started to read a new line + of input. The following example puts the line editor into vi + command mode when it starts up. + + + zle-line-init() { zle -K vicmd; } + zle -N zle-line-init + + (The command inside the function sets the keymap directly; it is + equivalent to zle vi-cmd-mode.) + +zle-line-finish + This is similar to zle-line-init but is executed every time the + line editor has finished reading a line of input. + +zle-history-line-set + Executed when the history line changes. + +zle-keymap-select + Executed every time the keymap changes, i.e. the special parameter + KEYMAP is set to a different value, while the line editor is + active. Initialising the keymap when the line editor starts does + not cause the widget to be called. + + The value $KEYMAP within the function reflects the new keymap. The + old keymap is passed as the sole argument. + + This can be used for detecting switches between the vi command + (vicmd) and insert (usually main) keymaps. + + + +18.6 Standard Widgets +===================== + +The following is a list of all the standard widgets, and their default +bindings in emacs mode, vi command mode and vi insert mode (the +`emacs', `vicmd' and `viins' keymaps, respectively). + +Note that cursor keys are bound to movement keys in all three keymaps; +the shell assumes that the cursor keys send the key sequences reported +by the terminal-handling library (termcap or terminfo). The key +sequences shown in the list are those based on the VT100, common on +many modern terminals, but in fact these are not necessarily bound. In +the case of the viins keymap, the initial escape character of the +sequences serves also to return to the vicmd keymap: whether this +happens is determined by the KEYTIMEOUT parameter, see *Note +Parameters::. + +* Menu: + +* Movement:: +* History Control:: +* Modifying Text:: +* Arguments:: +* Completion:: +* Miscellaneous:: +* Text Objects:: + + +File: zsh.info, Node: Movement, Next: History Control, Up: Zle Widgets + +18.6.1 Movement +--------------- + + +vi-backward-blank-word (unbound) (B) (unbound) + Move backward one word, where a word is defined as a series of + non-blank characters. + +vi-backward-blank-word-end (unbound) (gE) (unbound) + Move to the end of the previous word, where a word is defined as a + series of non-blank characters. + +backward-char (^B ESC-[D) (unbound) (unbound) + Move backward one character. + +vi-backward-char (unbound) (^H h ^?) (ESC-[D) + Move backward one character, without changing lines. + +backward-word (ESC-B ESC-b) (unbound) (unbound) + Move to the beginning of the previous word. + +emacs-backward-word + Move to the beginning of the previous word. + +vi-backward-word (unbound) (b) (unbound) + Move to the beginning of the previous word, vi-style. + +vi-backward-word-end (unbound) (ge) (unbound) + Move to the end of the previous word, vi-style. + +beginning-of-line (^A) (unbound) (unbound) + Move to the beginning of the line. If already at the beginning of + the line, move to the beginning of the previous line, if any. + +vi-beginning-of-line + Move to the beginning of the line, without changing lines. + +down-line (unbound) (unbound) (unbound) + Move down a line in the buffer. + +end-of-line (^E) (unbound) (unbound) + Move to the end of the line. If already at the end of the line, + move to the end of the next line, if any. + +vi-end-of-line (unbound) ($) (unbound) + Move to the end of the line. If an argument is given to this + command, the cursor will be moved to the end of the line (argument + - 1) lines down. + +vi-forward-blank-word (unbound) (W) (unbound) + Move forward one word, where a word is defined as a series of + non-blank characters. + +vi-forward-blank-word-end (unbound) (E) (unbound) + Move to the end of the current word, or, if at the end of the + current word, to the end of the next word, where a word is defined + as a series of non-blank characters. + +forward-char (^F ESC-[C) (unbound) (unbound) + Move forward one character. + +vi-forward-char (unbound) (space l) (ESC-[C) + Move forward one character. + +vi-find-next-char (^X^F) (f) (unbound) + Read a character from the keyboard, and move to the next + occurrence of it in the line. + +vi-find-next-char-skip (unbound) (t) (unbound) + Read a character from the keyboard, and move to the position just + before the next occurrence of it in the line. + +vi-find-prev-char (unbound) (F) (unbound) + Read a character from the keyboard, and move to the previous + occurrence of it in the line. + +vi-find-prev-char-skip (unbound) (T) (unbound) + Read a character from the keyboard, and move to the position just + after the previous occurrence of it in the line. + +vi-first-non-blank (unbound) (^) (unbound) + Move to the first non-blank character in the line. + +vi-forward-word (unbound) (w) (unbound) + Move forward one word, vi-style. + +forward-word (ESC-F ESC-f) (unbound) (unbound) + Move to the beginning of the next word. The editor's idea of a + word is specified with the WORDCHARS parameter. + +emacs-forward-word + Move to the end of the next word. + +vi-forward-word-end (unbound) (e) (unbound) + Move to the end of the next word. + +vi-goto-column (ESC-|) (|) (unbound) + Move to the column specified by the numeric argument. + +vi-goto-mark (unbound) (`) (unbound) + Move to the specified mark. + +vi-goto-mark-line (unbound) (') (unbound) + Move to beginning of the line containing the specified mark. + +vi-repeat-find (unbound) (;) (unbound) + Repeat the last vi-find command. + +vi-rev-repeat-find (unbound) (,) (unbound) + Repeat the last vi-find command in the opposite direction. + +up-line (unbound) (unbound) (unbound) + Move up a line in the buffer. + + |
