mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-15 13:34:18 +01:00
9b4cc61b09
add high res timestamps to NEWS
711 lines
31 KiB
Plaintext
711 lines
31 KiB
Plaintext
-------------------------------------
|
|
CHANGES FROM PREVIOUS VERSIONS OF ZSH
|
|
-------------------------------------
|
|
|
|
Major changes between versions 4.2 and 4.3
|
|
------------------------------------------
|
|
|
|
- There is support for multibyte character sets. This is now reasonably
|
|
close to complete, although Unicode combining characters don't work
|
|
properly. See Multibyte Character Support in INSTALL.
|
|
|
|
- The shell can now run an installation function for a new user
|
|
(a user with no .zshrc, .zshenv, .zprofile or .zlogin file) without
|
|
any additional setting up by the administrator. See "THE ZSH/NEWUSER
|
|
MODULE" in the zshmodules manual page.
|
|
|
|
- The manual now has a Roadmap section (manual page zshroadmap) to
|
|
give new users an indication of the most interesting parts of the
|
|
manual.
|
|
|
|
- New option PROMPT_SP (on by default): works around the problem that the
|
|
line editor can overwrite output with no newline at the end. See the
|
|
zshoptions manual page.
|
|
|
|
- New option HIST_SAVE_BY_COPY (on by default): history is saved by
|
|
copying and renaming instead of directly overwriting. See the
|
|
zshoptions manual page.
|
|
|
|
- New redirection syntax e.g. {myfd}>file opens a new file descriptor
|
|
and stores the number in $myfd, so that >&$myfd will work. Chosen
|
|
not to break existing code (and to be compatible with proposals for the
|
|
Korn shell). See the section REDIRECTION in the zshmisc manual page.
|
|
|
|
- Substitutions of the form ${var:-"$@"}, ${var:+"$@"} and similar where
|
|
word-splitting is applied to the text after the :- or :+ (in particular,
|
|
where the SH_WORD_SPLIT option is in effect for compatibility) now
|
|
behave as in other Bourne- and POSIX-compatible shells when in the
|
|
appropriate emulation mode.
|
|
|
|
- New Posix-style zsh-specific tests [[:IDENT:]], [[:IFS:]],
|
|
[[:IFSSPACE:]], [[:WORD:]] test if character can appear in identifier,
|
|
is an IFS character, is an IFS whitespace character, or is considered
|
|
as part of a word (is alphanumeric or appears in $WORDCHARS). These
|
|
works correctly on multibyte characters if the appropriate support
|
|
is present. See the section FILENAME GENERATION in the zshexpn
|
|
manual page.
|
|
|
|
- Time comparisons on files when sorting or using test operators will
|
|
use high-resolution timestamps when available. This gives a
|
|
resolution of a nanosecond instead of a second.
|
|
|
|
- The idiom =(<<<...) is optimised so that the shell internally turns
|
|
the ... into the contents of a file whose name is then substituted.
|
|
The syntax has always been usable by means of the NULLCMD feature,
|
|
but previously it generated an intermediate process; it has now
|
|
been rewritten along the same lines as the optimisation for $(<...)
|
|
that inserts a file into the command line without the use of an
|
|
external programme.
|
|
|
|
- Supplied functions catch and throw provide limited support for
|
|
exception handling using the `{ ... } always { ... }' syntax.
|
|
See the section EXCEPTION HANDLING in the zshcontrib manual page.
|
|
|
|
- Signals now accept the SIG as part of the name for compatibility with
|
|
other shells.
|
|
|
|
- Editor function argument-base allows non-decimal arguments for
|
|
editor widgets. See the entry in the zshzle manual page.
|
|
|
|
- As always, there are many enhancements to completion functions.
|
|
|
|
Changes in 4.2 since version 4.2.0
|
|
----------------------------------
|
|
|
|
- The autoload and related builtins take options -k and -z to indicate
|
|
ksh or zsh autoloading style for given functions, making it possible
|
|
to mix and match.
|
|
|
|
- Assignments to associative arrays can use the i and r index flags.
|
|
For example,
|
|
assoc[(i)alpha*]=bravo
|
|
sets the value for the element whose key matches the pattern `alpha*';
|
|
assoc[(r)activ*]=passive
|
|
sets the value for the element whose current value matches the pattern
|
|
`activ*'.
|
|
|
|
- The glob qualifier F indicates a non-empty directory. Hence *(F)
|
|
indicates all subdirectories with entries, *(/^F) means all
|
|
subdirectories with no entries.
|
|
|
|
- fc -p and fc -P provide push/pop for the status of the shell's
|
|
history (both internal and using the history file). With automatic
|
|
scoping (fc -ap) it becomes easy to use a temporary history in a
|
|
function. This has been added to the calculator function zcalc to make
|
|
its internal history work more seamlessly.
|
|
|
|
- A new `try block' and `always block' syntax has been introduced
|
|
to make it easier to ensure the shell runs important tidy-up code
|
|
in the event of an error. It also runs after a break, continue, or
|
|
return, including a return forced by the ERR_RETURN option
|
|
(but not an exit, which is immediate). The syntax is:
|
|
`{' try-block-list `}' `always' `{' always-block-list `}'
|
|
where no newline or semicolon may appear between `}' and `always'.
|
|
This is compatible with all previous valid zsh syntax as an `always'
|
|
at that point used to be a syntax error. For example,
|
|
{ echo Code run in current shell } always { echo Tidy-up code }
|
|
|
|
- A new zle widget reset-prompt has been added to re-expand the current
|
|
prompt. Changes to the variable in use as well as changes in its
|
|
expanions are both taken into account. The same effect is now forced by
|
|
a job change notification, making the %j prompt escape and %(j..) ternary
|
|
expression more useful.
|
|
|
|
- The zftp module supports ports following the hostname in the normal suffix
|
|
notation, `host:port'. This requires IPv6 colon-style addresses to be
|
|
specified in suitably quoted square brackets, for example:
|
|
|
|
zftp open '[f000::baaa]'
|
|
zftp open '[f000::baaa]:ftp'
|
|
|
|
(the two are equivalent).
|
|
|
|
- Special traps, those that don't correspond to signals, i.e. ZERR, DEBUG
|
|
and EXIT are no longer executed inside other traps. This caused
|
|
unnecessary confusion if, for example, both DEBUG and EXIT traps
|
|
were set. The new behaviour is more compatible with other shells.
|
|
|
|
- New option TRAPS_ASYNC which if set allows traps to run while the
|
|
shell is waiting for a child process. This is the traditional zsh
|
|
behaviour; POSIX requires the option to be unset. In sh/ksh
|
|
compatibility mode the option is turned off by default and the option
|
|
letter -T turns it on, for compatibility with FreeBSD sh.
|
|
|
|
- New WIDGETSTYLE, WIDGETFUNC parameters in ZLE.
|
|
|
|
- Glob qualifier (+func) is shorthand for (e:func:) (calls a command,
|
|
typically a shell function, with no argument).
|
|
|
|
New features between zsh versions 4.0 and 4.2
|
|
---------------------------------------------
|
|
|
|
Configuration:
|
|
- upgraded to use autoconf post-2.50
|
|
- improved compatibility with other shells through shell options,
|
|
builtin arguments and improved builtin option parsing
|
|
|
|
Syntax and builtins:
|
|
- new printf builtin
|
|
- `+=' to append to parameters which works for scalars, arrays and (with
|
|
pairs) associative arrays.
|
|
- enhanced multiple parameter `for' loops:
|
|
for key value in key1 value1 key2 value2 ...
|
|
maintaining full compatibility with POSIX syntax.
|
|
- Suffix aliases allow the shell to run a command on a file by suffix,
|
|
e.g `alias -s ps=gv' makes `foo.ps' execute `gv foo.ps'. Supplied
|
|
function zsh-mime-setup uses existing mailcap and mime.types files
|
|
to set up suitable aliases. Supplied function pick-web-browser is
|
|
suitable for finding a browser to show .html etc. files by suffix alias.
|
|
- new option `no_case_glob' for case-insensitive globbing.
|
|
|
|
Add-on modules and functions:
|
|
- zsh/datetime modules makes date formatting and seconds since EPOCH
|
|
available inside the shell.
|
|
- zsh/net/tcp module provides builtin interface to TCP through ztcp
|
|
builtin. Function suite for interactive and script use with expect-style
|
|
pattern matching.
|
|
- zsh/net/socket module provides zsocket builtin.
|
|
- zcalc calculator function with full line editing.
|
|
- builtin interface to pcre library
|
|
- zsh/zselect module provides zselect builtin as interface to select
|
|
system call
|
|
|
|
Completion system:
|
|
- general improvements to command and context support, low-level functions,
|
|
display code.
|
|
- in verbose mode, matches with the same description are grouped
|
|
- highly configurable completions for values of specific parameters,
|
|
specific redirections for specific commands
|
|
- support for bash completion functions (typically zsh native functions are
|
|
more powerful where available)
|
|
- New completions provided for (some of these may be in later 4.0
|
|
releases): valgrind, tidy, texinfo, infocmp, Java classes, larch, limit,
|
|
locale parameters, netcat, mysqldiff, mt, lsof, elinks, ant, debchange
|
|
(dch), email addresses, file system types, Perforce, xsltproc.
|
|
Plus many others.
|
|
|
|
Line editor:
|
|
- special parameters $PREDISPLAY, $POSTDISPLAY available in function
|
|
widgets to configure uneditable text (for narrowing)
|
|
- recursive editing
|
|
- supplied widgets read-from-minibuffer, replace-string use these features
|
|
(more intuitive prompting and argument reading than 4.0)
|
|
- access to killed text via $CUTBUFFER and $killring
|
|
- supplied highly configurable word widgets forward-word-match etc., can
|
|
set what constitutes a word interactively or in startup script
|
|
(implement bash-style behaviour, replacing previous bash-* word widgets)
|
|
- interface to incremental search via $LASTSEARCH
|
|
- better handling of keymaps in zle and widgets
|
|
- better support for output from user-defined widgets while zle is active
|
|
- tetris game which runs entirely in zle
|
|
- several other contributed widgets
|
|
|
|
Local internal improvements:
|
|
- disowned jobs are automatically restarted
|
|
- \u and \U print escapes for Unicode
|
|
- read -d <delimiter> allows a custom line ending.
|
|
- read -t <timeout>.
|
|
- line numbers in error messages and $PS4 output are more consistent
|
|
- `=prog' expands only paths, no longer aliases for consistency
|
|
- job display in prompts; `jobs' command output can be piped
|
|
- prompts: new $RPROMPT2, %^, %j, %y, enhanced %{, %}, %_.
|
|
- rand48() function in zsh/mathfunc for better randomness in arithmetic
|
|
(if the corresponding math library function is present)
|
|
- $SECONDS parameter can be made floating point via `typeset -F SECONDS'
|
|
for better timing accuracy
|
|
- improvements to command line history mechanism
|
|
- job table is dynamically sized, preventing overflow (typically seen
|
|
previously in complex completions).
|
|
- many bugfixes
|
|
|
|
|
|
New features in zsh version 4.0.1
|
|
---------------------------------
|
|
|
|
Compared with 3.1.9, there are mostly incremental improvements to
|
|
- the new completion system --- more functions, completers, styles...
|
|
- the line editor
|
|
- handling of signals and traps
|
|
- the configuration system, particularly for modules
|
|
- Cygwin support (now essentially complete)
|
|
- arithmetic evaluation
|
|
- the zpty (pseudoterminal handling) module
|
|
- the test suite
|
|
plus various bug fixes and compatibility improvements.
|
|
|
|
The alias modules (zle.so as an alias for zsh/zle.so, etc.) have been
|
|
removed; use `zmodload -A' to load modules under other names. This is
|
|
irrelevant if you are upgrading from 3.0.
|
|
|
|
Compared with the 3.0 series of releases (the last stable set), the most
|
|
significant of a large number of improvements in the shell are:
|
|
- Dynamically loadable modules with hierarchical naming system
|
|
- Shell functions as editor functions, with much additional builtin support
|
|
- Incredibly rich new completion system; just needs a single
|
|
initialization command to provide completion for all sorts of commands
|
|
and contexts
|
|
- Associative arrays
|
|
- Lots of new features in parameter substitution and globbing; more
|
|
logical handling of nested parameter substitutions
|
|
- Rewritten pattern-matching (globbing) code supports approximate
|
|
and case-insensitive matching and backreferences
|
|
- Various custom modules for pty's, FTP, special parameters, etc.
|
|
- Rewrites of many internal parts of the code: execution code to
|
|
provide compilation to internal representation, pattern matching
|
|
- Floating point arithmetic and mathematical functions module
|
|
- A test suite
|
|
- Various new options for compatibility with this, that and the other
|
|
See the 3.1.x changes below for more detail.
|
|
|
|
New features in zsh version 3.1.8 and 3.1.9
|
|
-------------------------------------------
|
|
These are primarily bug-fix versions. There are only a few user-visible
|
|
changes.
|
|
- Array slices ${array[a,b]} with b < a now correctly have zero length.
|
|
|
|
New features in zsh version 3.1.7
|
|
---------------------------------
|
|
Further enhancements to new completion system:
|
|
- Comprehensive context-sensitive configuration via `styles', which
|
|
can be set by the menu-driven front end in compinstall
|
|
- General mechanism for setting patterns to be ignored in a completion;
|
|
overriding of patterns to be matched for functions
|
|
- New completers: _prefix to complete word before cursor, _ignored
|
|
to complete using words so far ignored (like $fignore but more
|
|
powerful), _history to complete words from shell history
|
|
- Multiple use of completers with different options, similarly splitting
|
|
of different types of completion (`tags') so they are considered with
|
|
different styles
|
|
- Many more supplied completions for standard commands which work out of
|
|
the box, and better handling of command line options/arguments which
|
|
behave in the usual way
|
|
- $fpath now set up to use installed functions by default; functions
|
|
can be loaded just by `autoload -U compinit; compinit'
|
|
- Much improved handling of nested quoting and nested braces
|
|
- New LIST_PACKED and LIST_ROWS_FIRST completion options and corresponding
|
|
styles
|
|
- compctl library separated out (frozen but still supported)
|
|
- User-friendly introduction available at zsh website
|
|
http://sunsite.auc.dk/zsh/
|
|
|
|
Additions to complist listing library (coloured completion and menu
|
|
selection):
|
|
- Listings can be shown page by page (are by default for new completion)
|
|
- Menu selection allows full up and down scrolling of long lists
|
|
|
|
Other editing features:
|
|
- new parameters $PENDING, $MARK, $BUFFERLINES
|
|
- Easy display of a prompt from within an editing widget
|
|
|
|
Code parsing, storing and execution:
|
|
- Completely new system of storing code internally, greatly optimised
|
|
- Much less memory for shell functions etc.
|
|
- Can compile shell functions to .zwc `wordcode' functions for fast
|
|
loading
|
|
- Can create `digest' files of entire directories in .zwc format
|
|
|
|
Parameters:
|
|
- Floating point support added, similar to ksh93, `typeset -F' and
|
|
`typeset -E' declare floating point variables; usual C/Fortran-like
|
|
rules for integer/float conversion
|
|
- Mathematical library zsh/mathfunc contains all the standard mathematical
|
|
functions for use in arithmetical expressions
|
|
- Improved parsing of arithmetical expressions and better error messages
|
|
- Special parameters can be made local
|
|
- `typeset -h' hides specialness of parameters, either as parameter
|
|
attribute or when declaring new local variable
|
|
- Local parameters can now be exported as in other shells; new option
|
|
GLOBAL_EXPORTS on by default provides old behaviour that `typeset -x'
|
|
referred to global parameters.
|
|
- zsh/parameter module enhanced: now needed for new completion; parameters
|
|
provided have `-h' flag set so that they are hidden by `typeset', so
|
|
that existing functions don't need to be changed
|
|
- Quotes can be stripped from parameter values with ${(Q)...}, providing
|
|
reverse of ${(q...)...} facility
|
|
|
|
Globbing and pattern matching:
|
|
- Pattern matching rewritten for efficiency
|
|
- Supports `backreferences', i.e. extracting parenthesised chunks of
|
|
matches, e.g.
|
|
[[ $foo = (#b)(*/)[^/]* ]]
|
|
stores the part of $foo up to the last / in $match[1] and the indexes of
|
|
the match in $mbegin[1], $mend[1]. (#m) is also available to set $MATCH
|
|
to the entire match and corresponding $MBEGIN, $MEND: useful in
|
|
parameter substitutions like ${.../.../...}.
|
|
- (#s) and (#e) match start and end of pattern like ^ and $ in regular
|
|
expression, useful in complex expressions such as ((#s)|/)dirname((#e)|/)
|
|
and in parameter expressions.
|
|
|
|
- Depth-first/last listing of recursive glob lists
|
|
|
|
Functions etc.:
|
|
- `autoload -X' inside a function body instructs the shell to
|
|
bootstrap the function at that point
|
|
- `autoload +X fn' says load the function fn but don't execute it
|
|
- Prompt `themes' make customization of prompts easier
|
|
|
|
Modules:
|
|
- New hierarchical naming scheme for modules; supplied modules go into
|
|
zsh subdirectory, so zle becomes zsh/zle etc.; aliases supplied for
|
|
compatibility for existing code, but the new format should be used in
|
|
future.
|
|
- zmodload is more consistent between dynamically and statically linked
|
|
shells
|
|
- zsh/zftp and its function suite support multiple sessions (zfsession
|
|
command); zftransfer allows transfer of files between two ftp sessions
|
|
with no local file; use styles for e.g. progress style; IPv6 supported;
|
|
recursive put `zfput -r' for uploads
|
|
- zsh/zpty module creates pseudoterminal and allows builtin `expect'-like
|
|
behaviour
|
|
|
|
Other:
|
|
- Test suite, not yet complete (`make test')
|
|
- use of Linux task limits
|
|
- Many fixes including output redirection with `setopt xtrace' and
|
|
other redirection fixes; NIS+ problem.
|
|
- Better null-command behaviour in sh and csh emulation
|
|
- Internal memory usage optimisations
|
|
|
|
New features in zsh version 3.1.6 (beta version)
|
|
------------------------------------------------
|
|
Note also the changes for 3.0.6, which include changes between 3.1.5. and
|
|
3.1.6.
|
|
|
|
New completion system via shell functions; massive degree of
|
|
programmability and configurability:
|
|
- ready-made function suite to use, see zshcompsys(1)
|
|
- approximate completion and spelling correction via completion
|
|
- control over matching for case-independence, partial word completion, etc.
|
|
- menu selection: choose a completion by moving the cursor
|
|
- coloured completion lists
|
|
- completion of filenames in quotes is now more reliable; splitting
|
|
quoted strings into command arguments is also possible.
|
|
|
|
Other editing changes:
|
|
- enhancements to function/editing interface: new parameters, numeric
|
|
arguments, string argument passing, reading keys from widgets.
|
|
- the old history-search-{back,for}ward behaviour and bindings have
|
|
returned (up to minor details).
|
|
- BASH_AUTO_LIST option to show completion list only on second key press.
|
|
- the ZBEEP parameter gives a string to output instead of beeping,
|
|
allowing you to have a visual bell.
|
|
|
|
History changes: new options HIST_NO_FUNCTIONS, HIST_EXPIRE_DUPS_FIRST,
|
|
HIST_FIND_NO_DUPS, HIST_IGNORE_ALL_DUPS, INC_APPEND_HISTORY,
|
|
HIST_SAVE_NO_DUPS, SHARE_HISTORY, allow better control of when history is
|
|
read and written and how duplicates are handled. New format for history
|
|
saves.
|
|
|
|
Associative arrays plus enhanced parameter substitutions to retrieve keys
|
|
and values.
|
|
|
|
Globbing changes:
|
|
- Case-insensitive and approximate globbing.
|
|
- Ordering and indexing of globbing matches, e.g. *(om[1]) picks
|
|
most recently modified file.
|
|
- General file mode qualifier with chmod(1)-like syntax, e.g. *(f:u+wx:)
|
|
|
|
New loadable modules:
|
|
- zftp, plus associated function suite, for turning your zsh session
|
|
into an FTP session too
|
|
- parameter, for examining and altering shell hash tables via an
|
|
associative array interface.
|
|
- mapfile, for reading and writing external files via an associative
|
|
array interface.
|
|
|
|
Debugging and prompt enhancements:
|
|
- $PS4 can contain %i for $LINENO as well as %N for script or function
|
|
names (default PS4 changed), also %_ for current shell structure
|
|
executing;
|
|
- Prompt truncation %<...< is now more flexible: it applies to a
|
|
whole section of the prompt, not just one escape. You need to put
|
|
%<< after the truncated escape to get the old behaviour.
|
|
- %20(l.yes.no) in prompts prints yes if at least 20 characters have
|
|
been output, else no (e.g. for outputting extra newlines).
|
|
|
|
Parameter and expansion changes
|
|
- `typeset -t MYPATH mypath' creates tied path/PATH-like variables
|
|
- `typeset -g' allows operations on parameters without making them local
|
|
- New expansions
|
|
- ${(t)param} prints type information for $param
|
|
- ${(P)param} treats value of $param as the name of a param to
|
|
substitute
|
|
- ${foo:q} can quote replaced parameter text from expansion
|
|
- ${foo/old/new} substitution, like bash; also (S) flag for shortest
|
|
match
|
|
- $foo[(b.2.i)bar] starts searching $foo for bar starting at 2nd match
|
|
|
|
Builtin and function changes
|
|
- stat module: `stat -H hash foo' gives you e.g. $hash[mtime]
|
|
- `autoload -U' autoloads functions without alias expansion.
|
|
|
|
Other new options:
|
|
- LOCAL_TRAPS allows signal traps to be local to functions (as in ksh).
|
|
- NO_RCS can now be turned on at any point in initialization files.
|
|
- NO_GLOBAL_RCS can force /etc/z* files after /etc/zshenv to be skipped.
|
|
(Please don't use this as an excuse to stuff more into /etc/zshenv!)
|
|
- Existing MAGIC_EQUAL_SUBST option is more useful; any argument containing
|
|
...=~...:~... will perform filename expansion on the ~ (previously,
|
|
the string before `=' had to look like a parameter name).
|
|
|
|
Configuration changes:
|
|
- Generation of signal names should be more reliable
|
|
- Customizable installation of shell functions from distribution.
|
|
|
|
New features in zsh version 3.0.6
|
|
---------------------------------
|
|
|
|
Most of these changes are designed to improve compatibility with zsh
|
|
version 3.1.6, the latest development release. However, this release also
|
|
fixes all known Year 2000 (Y2K) bugs in zsh 3.0.
|
|
|
|
History changes:
|
|
- whitespace between words is ignored in history searches.
|
|
- new option HIST_REDUCE_BLANKS removes extra whitespace in the stored
|
|
history.
|
|
- support for reading (but not writing) version 3.1.6 history files.
|
|
|
|
Globbing changes:
|
|
- the a, c, and m glob qualifiers can now test time in seconds.
|
|
- globbing of number ranges behaves more like character ranges in that
|
|
it can match a prefix of a number, e.g. `<1-5>*' matches 1, 2, 3, 4,
|
|
5, 17, 23skiddoo, 5986, etc., but not 6, 7, 8ball, 911, etc.
|
|
|
|
Parameter and expansion changes:
|
|
- expansion of ~ and other globbing flags via ${~param} do not depend
|
|
upon EXTENDED_GLOB (bug fix).
|
|
- nested parameter substitutions require braces (this was always the
|
|
documented behavior, but previous parsers didn't enforce it).
|
|
- quote only nested expansion, e.g. ${(f)"$(<file)"} reads complete
|
|
`file', then splits lines into array.
|
|
|
|
Builtin and function changes:
|
|
- `typeset -U' works on the colon-array version of linked parameters.
|
|
- `typeset +f' and `functions +' output the names (only) of functions.
|
|
- `emulate -L' has the effect of `setopt localoptions'.
|
|
- in fn1() { local foo; unset foo; foo=bar; }, foo is restored at local
|
|
level, whereas if the `unset foo' appeared in a nested function it
|
|
would have been restored at global level, which was presumably wrong.
|
|
- `foo=bar >&file' is a redirection, not a NULLCMD.
|
|
- any single complex command, such as `case ... esac', parses as if
|
|
semicolon-terminated (bug fix).
|
|
- the shell function `preexec', if defined, is run after parsing each
|
|
command line but before executing the command.
|
|
|
|
Other changes:
|
|
- the option PRINT_EIGHT_BIT causes zsh to emit raw bytes in prompts
|
|
and completion lists even if the system ctype(3) package says that
|
|
those bytes are not "printable."
|
|
|
|
Debugging enhancements:
|
|
- LINENO is now very much more useful in scripts and functions and is
|
|
reported correctly in most error messages.
|
|
- ERREXIT behavior is now consistent with newer Bourne-like shells,
|
|
e.g. with respect to `if' tests that fail.
|
|
|
|
Configuration changes:
|
|
- Large file and 64-bit integers on 32-bit machines supported where
|
|
provided by OS.
|
|
- a few more system features, such as getpwnam/getpwuid, are tested for.
|
|
|
|
|
|
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 shorthand 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.
|