mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 21:44:11 +01:00
204 lines
7.9 KiB
Plaintext
204 lines
7.9 KiB
Plaintext
|
-------------------------------------
|
||
|
CHANGES FROM PREVIOUS VERSIONS OF ZSH
|
||
|
-------------------------------------
|
||
|
|
||
|
New features in zsh version 3.1 (beta version)
|
||
|
----------------------------------------------
|
||
|
|
||
|
On most operating systems zsh can load binary modules dynamically at
|
||
|
run-time. ZLE and the compctl builtin are now reside in a separate
|
||
|
module which is loaded automatically on demand.
|
||
|
|
||
|
for ((expr; expr; expr)) do ... done loop syntax from AT&T ksh93 is
|
||
|
now supported.
|
||
|
|
||
|
POSIX globbing character classes ([:alnum:] etc.) are now supported.
|
||
|
|
||
|
ksh's case fall-through feature (;&) is supported.
|
||
|
|
||
|
ksh93's $'' quoting syntax is supported.
|
||
|
|
||
|
Restricted mode is now supported. This is controlled by the new option
|
||
|
RESTRICTED (-r).
|
||
|
|
||
|
New options BARE_GLOB_QUAL, HIST_NO_FUNCTIONS (alias NO_LOG), KSH_GLOB,
|
||
|
PRINT_EIGHT_BIT, PROMPT_BANG, PROMPT_PERCENT, RM_STAR_WAIT.
|
||
|
|
||
|
Options ALWAYS_LAST_PROMPT, APPEND_HISTORY, AUTO_LIST, AUTO_MENU,
|
||
|
AUTO_PARAM_KEYS, AUTO_PARAM_SLASH, AUTO_REMOVE_SLASH, LIST_AMBIGUOUS
|
||
|
and LIST_TYPES are now on by default.
|
||
|
|
||
|
In ZLE, arbitrarily many keymaps can be defined. Multi-character
|
||
|
keybindings now work.
|
||
|
|
||
|
Completion can be performed within a brace expansion.
|
||
|
|
||
|
EMACS-like universal-argument function.
|
||
|
|
||
|
|
||
|
New features in zsh version 3.0
|
||
|
-------------------------------
|
||
|
|
||
|
Trailing "/" in a glob pattern now works like in other shell thus it
|
||
|
can no longer be used as a sorthand for "(/)".
|
||
|
|
||
|
Much improved sh/ksh emulation. When zsh is invoked as sh it mostly
|
||
|
conforms to POSIX 1003.2.
|
||
|
|
||
|
Enhanced parameter expansion features: new flags: A, @, e, W, p, f, F.
|
||
|
Expansions can be nested. For example,
|
||
|
"${${(M)${(f@)$(<builtin.pro)}:#char*}[2][(w)3]}" expands to the third
|
||
|
word of the second line of builtin.pro which begins with char. See
|
||
|
zshexpn(1) for the details.
|
||
|
|
||
|
***/foo glob does recursive directory search following symbolic links.
|
||
|
|
||
|
Traps defined by the trap builtin are now executed in the current shell
|
||
|
environment and not as a shell function. This means that $1 is not set
|
||
|
to the signal number. Of course the TRAPxxx functions continue working
|
||
|
as before.
|
||
|
|
||
|
Traps defined by the trap builtin are reset to their default values in
|
||
|
subshells.
|
||
|
|
||
|
Option names can be prefixed by `no' to unset an option.
|
||
|
setopt no_option_name is the same as unsetopt option_name.
|
||
|
This change affects the output of the setopt and unsetopt
|
||
|
builtins when these are invoked without arguments. See
|
||
|
the zshoptions manual page for more explanation.
|
||
|
|
||
|
!, {, } and [[ are now reserved words. Things like [[-z $foo]] or {foo}
|
||
|
should not be used. {foo} still works if the IGNORE_BRACES option is not
|
||
|
set but this feature may be removed in the future. [[ -z $foo ]] and
|
||
|
{ foo } should be used instead.
|
||
|
|
||
|
HOSTTYPE special parameter is removed. The new OSTYPE, MACHTYPE and
|
||
|
VENDOR parameters should be used instead.
|
||
|
|
||
|
VERSION parameter is renamed to ZSH_VERSION
|
||
|
|
||
|
exec now saves the history in interactive shells. If you do not like this
|
||
|
behaviour you can alias exec to 'unset HISTFILE ; exec'.
|
||
|
|
||
|
${~spec}, ${=spec} and ${^spec} used to toggle the effect of
|
||
|
globsubst/shwordsplit/rcexpandparam. Now these force the corresponding
|
||
|
option on. ~, = or ^ can be doubled to force the relevant option off for
|
||
|
the substitution.
|
||
|
|
||
|
Explicitly requested word splitting like ${=spec} or ${(s:delim:)spec}
|
||
|
will be executed even if the substitution is double quoted.
|
||
|
|
||
|
The right-hand side of assignments are no longer globbed by default hence
|
||
|
assignment foo=* will assign '*' as a value of foo. Use the foo=( * )
|
||
|
array assignment syntax to get the old behaviour. Alternatively the
|
||
|
GLOB_ASSIGN can be set to emulate the old behaviour but the usage of this
|
||
|
option is strongly discouraged and this option may be completely removed in
|
||
|
the future.
|
||
|
|
||
|
foo=$bar no longer creates an array even if bar is an array. Use
|
||
|
foo=( $bar ) or even better, foo=( "$bar[@]" ) instead.
|
||
|
|
||
|
When foo is an array parameter ${#foo} will always return the length of the
|
||
|
array even if the substitution is double quoted. ${(c)#foo} should be used
|
||
|
to get back the old behaviour.
|
||
|
|
||
|
When the prompt_subst option is set prompts are fully expanded using
|
||
|
parameter expansion, command substitution and arithmetic expansion.
|
||
|
In 2.5 backquote substitution was not performed in the prompts so this
|
||
|
change might cause problems in some startup scripts if ` is used literally
|
||
|
in prompts.
|
||
|
|
||
|
History substitution is now not performed if the history escape character
|
||
|
appears in a single-quoted string. This may break some interactive shell
|
||
|
functions which use \! in single-quoted strings.
|
||
|
|
||
|
The UID, EUID, GID, EGID parameters can be assigned now. The assignment
|
||
|
executes the setuid(), seteuid(), setgid(), setegid() respectively. On
|
||
|
systems where setuid and seteuid is not supported these functions are
|
||
|
emulated using setreuid or setresuid which may result in a different
|
||
|
behaviour.
|
||
|
|
||
|
Assigning the USERNAME parameter will call setuid(uid) where uid is the
|
||
|
user id of the specified user.
|
||
|
|
||
|
The privileged (-p) option is automatically set on invocation if euid != uid
|
||
|
or egid != gid. If this option is set no user startup files are sourced.
|
||
|
The shell will drop privileges when this option is unset by resetting its
|
||
|
euid to uid and its egid to gid.
|
||
|
|
||
|
The =number substitution for accessing the directory stack is changed to
|
||
|
~number to allow =command substitution when a command name begins with a
|
||
|
digit.
|
||
|
|
||
|
<> is a redirection operator which opens the standard input for both
|
||
|
reading and writing. To match a number use <->.
|
||
|
|
||
|
Option letters -1 and -C for PRINT_EXIT_VALUE and NO_CLOBBER are swapped:
|
||
|
`set -C' sets NO_CLOBBER and `set -1' sets PRINT_EXIT_VALUE.
|
||
|
|
||
|
AUTO_PUSHD behaviour is changed. Now cd without arguments will always go
|
||
|
to the $HOME directory even if AUTO_PUSHD is set and PUSHD_TO_HOME is not
|
||
|
set. If you preferred the old behaviour you can alias cd to pushd.
|
||
|
|
||
|
IFS word splitting with SH_WORD_SPLIT and the splitting of the input in the
|
||
|
read builtin has changed in cases when IFS contains characters other than
|
||
|
<space>, <tab>, <newline>. See the description of IFS in the zshparam
|
||
|
manual page for more details.
|
||
|
|
||
|
|
||
|
New features in zsh version 2.5
|
||
|
-------------------------------
|
||
|
|
||
|
Greatly expanded completion possibilities. Programmable completion
|
||
|
allows detailed control over what arguments of what commands can be
|
||
|
completed to what. See dots/zcomp in the distribution for examples.
|
||
|
|
||
|
Expand filenames with ~ and = on the right hand side of parameter
|
||
|
assignments. New option MAGIC_EQUAL_SUBST to do it in all
|
||
|
identifier=expression arguments.
|
||
|
|
||
|
${+name} becomes 1 or 0 if name is set or unset. ${~spec} toggles
|
||
|
GLOB_SUBST in substitution. Parameter substitution takes lots
|
||
|
of flags in the format ${(flags)name}.
|
||
|
|
||
|
New glob qualifiers for block/character special files, times in glob
|
||
|
qualifiers can be in months, weeks, days, hours, minutes. Qualifiers can
|
||
|
work on links or on what they point to. Qualifiers separated by commas
|
||
|
are or-ed.
|
||
|
|
||
|
New parameter substitution modifiers (fFwW) to repeat actions. New
|
||
|
option CSH_JUNKIE_HISTORY.
|
||
|
|
||
|
New line editor functions history-beginning-search-backward,
|
||
|
history-beginning-search-forward, expand-or-complete-prefix, push-input,
|
||
|
push-line-or-edit.
|
||
|
|
||
|
Assign to part of a string, use qualifiers on string subscription with
|
||
|
$foo[(qual)2,5]
|
||
|
|
||
|
New parameters: EGID, EUID, KEYTIMEOUT
|
||
|
|
||
|
New prompt escape sequence %_ to get constructs like for and while in
|
||
|
the secondary prompt. %E in prompt clears to end of screen.
|
||
|
|
||
|
Conditional expressions in PROMPT and WATCHFMT.
|
||
|
|
||
|
New options ALWAYS_LAST_PROMPT, ALWAYS_TO_END, AUTO_PARAM_KEYS,
|
||
|
COMPLETE_ALIASES, COMPLETE_IN_WORD, CSH_JUNKIE_HISTORY, GLOB_SUBST,
|
||
|
LIST_AMBIGUOUS, MAGIC_EQUAL_SUBST, NO_FLOW_CONTROL, PROMPT_SUBST
|
||
|
|
||
|
New option -m to many builtins makes arguments subject to pattern
|
||
|
matching.
|
||
|
|
||
|
Bindkey can now bind both key sequences and prefixes of those. You can
|
||
|
for example bind ESC and function keys sending ESC sequences.
|
||
|
|
||
|
Additional options to read builtin to use in functions called by
|
||
|
completion.
|
||
|
|
||
|
New options to print to sort arguments and print them in columns.
|
||
|
|
||
|
Some additional resource limits can be specified.
|
||
|
|
||
|
Some editor functions now work in the minibuffer.
|