diff options
author | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-05-28 05:10:56 +0000 |
---|---|---|
committer | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-05-28 05:10:56 +0000 |
commit | cfdf88fde87ed098a9ed495589a939a25f5cdd90 (patch) | |
tree | 7873f16dd977a26e02730a859230d5452e354764 | |
parent | 4f54790af19a1f9e7199a03638cd22c475e252d6 (diff) | |
download | zsh-cfdf88fde87ed098a9ed495589a939a25f5cdd90.tar.gz zsh-cfdf88fde87ed098a9ed495589a939a25f5cdd90.tar.xz zsh-cfdf88fde87ed098a9ed495589a939a25f5cdd90.zip |
Merge in most of trunk, i.e. 21898, 21899, 21905, 22165, and 22752 (except
mention of newuser module, which is not on this branch).
-rw-r--r-- | Doc/Zsh/roadmap.yo | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/Doc/Zsh/roadmap.yo b/Doc/Zsh/roadmap.yo new file mode 100644 index 000000000..0870eed60 --- /dev/null +++ b/Doc/Zsh/roadmap.yo @@ -0,0 +1,177 @@ +texinode(Roadmap)(Invocation)(Introduction)(Top) +chapter(Roadmap) +cindex(roadmap) + +The Zsh Manual, like the shell itself, is large and often complicated. +This section of the manual provides some pointers to areas of the shell +that are likely to be of particular interest to new users, and indicates +where in the rest of the manual the documentation is to be found. + +sect(When the shell starts) + +When it starts, the shell reads commands from various files. These can +be created or edited to customize the shell. See ifzman(the section +Startup/Shutdown Files in zmanref(zsh))\ +ifnzman(noderef(Files)). + +sect(Interactive Use) + +Interaction with the shell uses the builtin Zsh Line Editor, ZLE. This is +described in detail in ifzman(zmanref(zshzle))\ +ifnzman(noderef(Zsh Line Editor)). + +The first decision a user must make is whether to use the Emacs or Vi +editing mode as the keys for editing are substantially different. Emacs +editing mode is probably more natural for beginners and can be selected +explicitly with the command tt(bindkey -e). + +A history mechanism for retrieving previously typed lines (most simply +with the Up or Down arrow keys) is available; note that, unlike other +shells, zsh will not save these lines when the shell exits unless you +set appropriate variables, and the number of history lines retained by +default is quite small (30 lines). See the description of the shell +variables (referred to in the documentation as parameters) tt(HISTFILE), +tt(HISTSIZE) and tt(SAVEHIST) in ifzman(zmanref(zshparam))\ +ifnzman(noderef(Parameters Used By The Shell)). + +subsect(Completion) + +Completion is a feature present in many shells. It allows the user to +type only a part (usually the prefix) of a word and have the shell fill +in the rest. The completion system in zsh is programmable. For +example, the shell can be set to complete email addresses in +arguments to the mail command from your tt(~/.abook/addressbook); +usernames, hostnames, and even remote paths in arguments to scp, and so +on. Anything that can be written in or glued together with zsh can be +the source of what the line editor offers as possible completions. + +Zsh has two completion systems, an old, so called tt(compctl) completion +(named after the builtin command that serves as its complete and only +user interface), and a new one, referred to as tt(compsys), +organized as library of builtin and user-defined functions. +The two systems differ in their interface for specifying the completion +behavior. The new system is more customizable and is supplied with +completions for many commonly used commands; it is therefore to be +preferred. + +The completion system must be enabled explicitly when the shell starts. +For more information see +ifzman(zmanref(zshcompsys))\ +ifnzman(noderef(Completion System)). + +subsect(Extending the line editor) + +Apart from completion, the line editor is highly extensible by means of +shell functions. Some useful functions are provided with the shell; they +provide facilities such as: + +startitem() +item(tt(insert-composed-char))( +composing characters not found on the keyboard +) +item(tt(match-words-by-style))( +configuring what the line editor considers a word when moving or +deleting by word +) +item(tt(history-beginning-search-backward-end), etc.)( +alternative ways of searching the shell history +) +item(tt(replace-string), tt(replace-pattern))( +functions for replacing strings or patterns globally in the command line +) +item(tt(edit-command-line))( +edit the command line with an external editor. +) +enditem() + +See ifzman(the section `ZLE Functions' in zmanref(zshcontrib))\ +ifnzman(noderef(ZLE Functions)) for descriptions of these. + +sect(Options) + +The shell has a large number of options for changing its behaviour. +These cover all aspects of the shell; browsing the full documentation is +the only good way to become acquainted with the many possibilities. See +ifzman(zmanref(zshoptions))\ +ifnzman(noderef(Options)). + +sect(Pattern Matching) + +The shell has a rich set of patterns which are available for file matching +(described in the documentation as `filename generation' and also known for +historical reasons as `globbing') and for use when programming. These are +described in ifzman(the section `Filename Generation' in zmanref(zshexpn))\ +ifnzman(noderef(Filename Generation)). + +Of particular interest are the following patterns that are not commonly +supported by other systems of pattern matching: + +startitem() +item(tt(**))( +for matching over multiple directories +) +item(tt(~), tt(^))( +the ability to exclude patterns from matching when the tt(EXTENDED_GLOB) +option is set +) +item(tt(LPAR())var(...)tt(RPAR()))( +glob qualifiers, included in parentheses at the end of the pattern, +which select files by type (such as directories) or attribute (such as +size). +) +enditem() + +sect(General Comments on Syntax) + +Although the syntax of zsh is in ways similar to the Korn shell, and +therefore more remotely to the original UNIX shell, the Bourne shell, +its default behaviour does not entirely correspond to those shells. +General shell syntax is introduced in ifzman(the section `Shell Grammar' in +zmanref(zshmisc))\ +ifnzman(noderef(Shell Grammar)). + +One commonly encountered difference is that variables (other than arrays, a +particular type of variable) substituted onto the command line are not +split into words. See the description of the shell option +tt(SH_WORD_SPLIT) in ifzman(the section `Parameter Expansion' in +zmanref(zshexpn))\ +ifnzman(noderef(Parameter Expansion)). +In zsh, you can either explicitly request the splitting (e.g. tt(${=foo})) +or use an array when you want a variable to expand to more than one word. See +ifzman(the section `Array Parameters' in zmanref(zshparam))\ +ifnzman(noderef(Array Parameters)). + +sect(Programming) + +The most convenient way of adding enhancements to the shell is typically +by writing a shell function and arranging for it to be autoloaded. +Functions are described in ifzman(the section `Functions' in +zmanref(zshmisc))\ +ifnzman(noderef(Functions)). + +A few general functions, other than those for the line editor described +above, are provided with the shell and are described in +ifzman(zmanref(zshcontrib))\ +ifnzman(noderef(User Contributions)). Features include: + +startitem() +item(tt(promptinit))( +a prompt theme system for changing prompts easily, see ifzman(the section +`Prompt Themes' +)\ +ifnzman(noderef(Prompt Themes)) +) +item(tt(zsh-mime-setup))( +a MIME-handling system which dispatches commands according to the suffix of +a file as done by graphical file managers +) +item(tt(zcalc))( +a calculator +) +item(tt(zargs))( +a version of tt(xargs) that makes the tt(find) command redundant +) +item(tt(zmv))( +a command for renaming files with patterns. +) +enditem() |