From 8784bbe97c078f13c91cc220eb0e13c1a92f1655 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 2 Jul 2004 15:59:07 +0000 Subject: 20126: tidy up before 4.2.1 20127: tweaked version of Wayne's patch to reexand prompts --- FEATURES | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 FEATURES (limited to 'FEATURES') diff --git a/FEATURES b/FEATURES new file mode 100644 index 000000000..95a0d617c --- /dev/null +++ b/FEATURES @@ -0,0 +1,108 @@ +------------ +ZSH FEATURES +------------ + +very close to ksh/sh grammar, with csh additions +most features of ksh, bash, and tcsh +can emulate ksh or POSIX sh +100 builtins, 145 options, 166 key bindings +short for loops, ex: for i (*.c) echo $i +select +shell functions +autoloaded functions (loaded from a file when they are first referenced) +conditional expressions (test builtin, [ ... ], and ksh-style [[ ... ]]) +global aliases (may be expanded anywhere on the line) +directory stack access with ~num +process substitution (vi =(cmd) edits the output of cmd) +generalized pipes (ls foo >>(cmd1) 2>>(cmd2) pipes stdout to cmd1 + and stderr to cmd2) +arithmetic expressions +advanced globbing: + ls **/file searches recursively for "file" in subdirectories + ls file<20-> matches file20, file30, file100, etc. + ls *.(c|pro) matches *.c and *.pro + ls *(R) matches only world-readable files + ls *.c~lex.c matches all .c files except lex.c + ls (#a1)README matches README with one error, e.g. RADME, REEDME, RAEDME + ls (#ia1)README same but case insensitive +qualifiers in parentheses after globbing expression: + ls *(*@) matches executable files/directories or symlinks + ls *(L0f.go-w.) matches all zero-length files not group or world writable + ls *(om[2]) matches the two most recently modified files +null command shorthands: + "< file" is same as "more file" is same as "cat >file" + ">> file" is same as "cat >>file" +ksh-style coprocesses +automatic file stream teeing (ls >foo >bar puts output in two places) +chpwd() function run every time you change directory (useful for + updating the status line) +job control +csh-style history +full vi line editing, including "c2w" and "y$" and such things +full emacs line editing +line editor is programmable via shell functions + - access and manipulate editor state via builtins and parameters + - user-defined `widgets' behave like other editor functions + - keymap customisation + - example functions provided +incremental history search +magic-space history +spelling correction +array parameters +associative array parameters +tie parameters a la path/PATH, e.g. ld_library_path/LD_LIBRARY_PATH +$MACHTYPE, $VENDOR and $OSTYPE identify the host machine +$LINENO, $RANDOM, $SECONDS, $cdpath, $COLUMNS, $fignore, $HISTCHARS, $mailpath +$UID, $EUID, $GID, $EGID and $USERNAME can be assigned to +with autocd option, typing a directory name by itself is the same as + typing "cd dirname" +incremental path hashing +automatic process time reporting for commands that run over a certain limit +full tcsh-style prompt substitution plus conditional prompt expressions +utmp login/logout reporting +with histverify option, performing csh-style history expansions causes the + input line to be brought up for editing instead of being executed +with sunkeyboardhack option, accidentally typed trailing ` characters + are removed from the input line (for those of you with Sun keyboards :-) ) +"cd old new" replaces "old" with "new" in directory string +generalized argument completion, new system based on shell functions: + - highly context sensitive + - large (and I mean large) set of completions supplied, from a2ps to zstyle + - partial file path completion + - spelling correction and approximate completion of any completable word + - highly configurable expansion of shell arguments + - completion list colouring [`colorizing' for you lot over there] + - selection of completion elements with the cursor + - full scrolling of lists (in optional module) + - completion of words from the history list + - `styles' feature for versatile configuration + - `tags' feature for choosing completions preferentially + - `match' specifications, allowing e.g. + - variant forms: NO_glob, noglob, _NOGLOB_ all from the keyword glob + - partial-word matches with arbitrary anchors, e.g. + z_t.c -> zle_tricky.c + c.u.s -> comp.unix.shell + - complete control over case-insensitive matching + - can be defined globally or for individual completions + - bindable special completion functions +menu completion: pressing TAB repeatedly cycles through the possible matches +prompt on right side of screen +directory stacks +history datestamps and execution time records +command scheduling (like at(1), but in the shell's context) +tty mode freezing +up to 9 startup files (but you only need 1 or 2) +really 8-bit clean, and we mean it this time +which -a cmd lists all occurrences of "cmd" in the path +floating point support +dynamically loadable binary modules, supplied modules include + - an FTP client which runs in the shell, with function suite + - math functions + - builtin interface to the `stat' system command + - builtin versions of standard commands (mv, ln, etc.) for emergencies + - special parameters to access internal state of hash tables etc. + - special associative array to access contents of files directly + - profiler for shell functions + - a pseudo-terminal handler, for purposes like `expect' + - builtins for interaction with termcap and terminfo -- cgit 1.4.1