------------------------------------- CHANGES FROM PREVIOUS VERSIONS OF ZSH ------------------------------------- New features in zsh version 3.1.6 (beta version) ------------------------------------------------ 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 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. 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. 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: - LINENO is now very much more useful in scripts and functions and has corresponding prompt escape %i - $PS4 can contain %i 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 - more logical behaviour of nested parameters, now properly documented - quote only nested expansion, e.g. ${(f)"$( 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 , , . 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.