zshrc: Remove makereadable
[grml-etc-core.git] / doc / grmlzshrc.t2t
index 3f0d90d..c0781d3 100644 (file)
@@ -1,13 +1,13 @@
 GRMLZSHRC
 
-August, 2009
+July, 2011
 
 %!target: man
 %!postproc(man): "^(\.TH.*) 1 "  "\1 5 "
 
 
 = NAME =
-grmlzshrc - grml's zsh setup
+grmlzshrc - Grml's zsh setup
 
 
 = SYNOPSIS =
@@ -15,7 +15,7 @@ grmlzshrc - grml's zsh setup
 
 
 = DESCRIPTION =
-The grml project provides a fairly exhaustive interactive setup (referred to
+The Grml project provides a fairly exhaustive interactive setup (referred to
 as //grmlzshrc// throughout this document) for the amazing unix shell zsh
 (http://zsh.sourceforge.net). This is the reference manual for that
 setup.
@@ -28,6 +28,18 @@ root user (**EUID** == 0) only a subset of features is loaded by default. This
 behaviour can be altered by setting the **GRML_ALWAYS_LOAD_ALL** STARTUP
 VARIABLE (see below).
 
+Users may want to keep an up-to-date version of the setup (possibly from the
+git-sources) in //~/.zshrc//. If that happens on a system where the global
+zshrc is also a //grmlzshrc// (but possibly an older one), you can inhibit
+loading the global version by doing:
+\
+```
+echo setopt no_global_rcs >> ~/.zshenv
+```
+
+Note, that this will disable //ANY// global files, except for the global
+zshenv file.
+
 = STARTUP VARIABLES =
 Some of the behaviour of //grmlzshrc// can be altered by setting certain shell
 variables. These may be set temporarily when starting zsh like this:
@@ -40,6 +52,62 @@ Or by setting them permanently in **zshrc.pre** (See AUXILIARY FILES below).
 If set to a value greater than zero and //acpi// installed, //grmlzshrc// will
 put the battery status into the right hand side interactive prompt.
 
+: **COMMAND_NOT_FOUND**
+A non zero value activates a handler, which is called when a command can not
+be found. The handler is defined by GRML_ZSH_CNF_HANDLER (see below).
+
+: **GRML_ALWAYS_LOAD_ALL**
+Enables the whole Grml setup for root, if set to a non zero value.
+
+: **GRML_ZSH_CNF_HANDLER**
+This variable contains the handler to be used by COMMAND_NOT_FOUND (see above)
+and defaults to "/usr/share/command-not-found/command-not-found".
+
+: **GRMLSMALL_SPECIFIC**
+Set this to zero to remove items in zsh config, which do not work in
+grml-small.
+
+: **HISTFILE**
+Where zsh saves the history. Default: ${HOME}/.zsh_history.
+
+: **HISTSIZE**
+Number of commands to be kept in the history. On a Grml-CD this defaults to
+500, on a hard disk installation to 5000.
+
+: **MAILCHECK**
+Sets the frequency in seconds for zsh to check for new mail. Defaults to 30.
+A value of zero turns off checking.
+
+: **NOCOR**
+Non zero values deactivate automatic correction of commands.
+
+: **NOMENU**
+If set to zero (default), allows selection from a menu, if there are at least
+five possible options of completion.
+
+: **NOPRECMD**
+A non zero value disables precmd and preexec commands. These are functions
+that are run before every command (setting xterm/screen titles etc.).
+
+: **REPORTTIME**
+Show time (user, system and cpu) used by external commands, if they run longer
+than the defined number of seconds (default: 5).
+
+: **SAVEHIST**
+Number of commands to be stored in ${HISTFILE}. Defaults to 1000 on a Grml-CD
+and to 10000 on an installation on hard disk.
+
+: **watch**
+As in tcsh(1) an array of login/logout events to be reported by the shell
+builtin "log". For details see zshparam(1). Defaults to (notme root).
+
+: **ZSH_NO_DEFAULT_LOCALE**
+Import "/etc/default/locale", if set to zero (default).
+
+: **ZSH_PROFILE_RC**
+A non zero value causes shell functions to be profiled. The results can be
+obtained with the zprof builtin command (see zshmodules(1) for details).
+
 
 = FEATURE DESCRIPTION =
 This is an in depth description of non-standard features implemented by
@@ -226,6 +294,119 @@ available via the usual history lookup widgets.
 
 
 = REFERENCE =
+== ENVIRONMENT VARIABLES ==
+//grmlzshrc// sets some environment variables, which influence the
+behaviour of applications.
+
+: **COLORTERM**
+Set to "yes". Some applications read this to learn about properties
+of the terminal they are running in.
+
+: **EDITOR**
+If not already set, sets the default editor. Falls back to vi(1),
+if vim(1) is not available.
+
+: **LESS_TERMCAP_***
+Some environment variables that add colour support to less(1) for viewing
+man pages. See termcap(5) for details.
+
+: **MAIL**
+The mailbox file for the current user is set to /var/mail/$USER, if not
+already set otherwise.
+
+: **PAGER**
+Set less(1) as default pager, if not already set to something different.
+
+: **QTDIR**
+Holds the path to shared files for the C++ application framework QT
+(version 3 or 4).
+
+: **SHELL**
+Set explicitly to /bin/zsh, to prevent certain terminal emulators to
+default to /bin/sh or /bin/bash.
+
+
+== OPTIONS ==
+Apart from zsh's default options, //grmlzshrc// sets some options
+that change the behaviour of zsh. Options that change Z-shell's default
+settings are marked by <grml>. But note, that zsh's defaults vary depending
+on its emulation mode (csh, ksh, sh, or zsh). For details, see zshoptions(1).
+
+: **append_history**
+Zsh sessions, that use //grmlzshrc//, will append their history list to the
+history file, rather than replace it. Thus, multiple parallel zsh sessions
+will all have the new entries from their history lists added to the history
+file, in the order that they exit. The file will still be periodically
+re-written to trim it when the number of lines grows 20% beyond the value
+specified by $SAVEHIST.
+
+: **auto_cd** <grml>
+If a command is issued that can't be executed as a normal command, and the
+command is the name of a directory, perform the cd command to that directory.
+
+: **auto_pushd** <grml>
+Make cd push the old directory onto the directory stack.
+
+: **completeinword** <grml>
+If the cursor is inside a word, completion is done from both ends;
+instead of moving the cursor to the end of the word first and starting
+from there.
+
+: **extended_glob** <grml>
+Treat the '#', '~' and '^' characters as active globbing pattern characters.
+
+: **extended_history** <grml>
+Save each command's beginning timestamp (in seconds since the epoch) and the
+duration (in seconds) to the history file.
+
+: **hash_list_all**
+Whenever a command completion is attempted, make sure the entire command
+path is hashed first. This makes the first completion slower.
+
+: **histignorealldups** <grml>
+If a new command line being added to the history list duplicates an
+older one, the older command is removed from the list, even if it is
+not the previous event.
+
+: **histignorespace** <grml>
+Remove command lines from the history list when the first character on
+the line is a space, or when one of the expanded aliases contains a
+leading space. Note that the command lingers in the internal history
+until the next command is entered before it vanishes.
+
+: **longlistjobs** <grml>
+List jobs in long format by default.
+
+: **nobeep** <grml>
+Avoid to beep on errors in zsh command line editing (zle).
+
+: **noglobdots**
+A wildcard character never matches a leading '.'.
+
+: **nohup** <grml>
+Do not send the hangup signal (HUP:1) to running jobs when the shell exits.
+
+: **nonomatch** <grml>
+If a pattern for filename generation has no matches, do not print an error
+and leave it unchanged in the argument list. This also applies to file
+expansion of an initial `~' or `='.
+
+: **notify**
+Report the status of background jobs immediately, rather than waiting until
+just before printing a prompt.
+
+: **pushd_ignore_dups** <grml>
+Don't push multiple copies of the same directory onto the directory stack.
+
+: **share_history** <grml>
+As each line is added to the history file, it is checked to see if anything
+else was written out by another shell, and if so it is included in the
+history of the current shell too. Using !-style history, the commands from
+the other sessions will not appear in the history list unless you explicitly
+type the "history" command. This option is activated for zsh versions >= 4,
+only.
+
+
 == KEYBINDINGS ==
 Apart from zsh's default key bindings, //grmlzshrc// comes with its own set of
 key bindings. Note that bindings like **ESC-e** can also be typed as **ALT-e**
@@ -234,64 +415,122 @@ on PC keyboards.
 : **ESC-e**
 Edit the current command buffer in your favourite editor.
 
+: **ESC-v**
+Deletes a word left of the cursor; seeing '/' as additional word separator.
+
+: **CTRL-x-1**
+Jump right after the first word.
+
+: **CTRL-x-M()**
+Create directory under cursor or the selected area.
+To select an area press ctrl-@ and use the cursor.
+Use case: you type "mv abc ~/testa/testb/testc/" and remember that the
+directory does not exist yet -> press **CTRL-xM** and problem solved.
+
+: **CTRL-x-p**
+Searches the last occurence of string before the cursor in the command history.
+
+: **CTRL-x-z**
+Display help on keybindings and zsh line editor. Press consecutively to page through content.
+
+: **CTRL-z**
+Brings a job, which got suspended with CTRL-z back to foreground.
+
 
 == SHELL FUNCTIONS ==
 //grmlzshrc// comes with a wide array of defined shell functions to ease the
 user's life.
 
-: **2html()**
-Converts plaintext files to HTML using vim. The output is written to
-<filename>.html.
-
 : **855resolution()**
 If 915resolution is available, issues a warning to the user to run it instead
 to modify the resolution on intel graphics chipsets.
 
+: **accessed()**
+Lists files in current directory, which have been accessed within the
+last N days. N is an integer to be passed as first and only argument.
+If no argument is specified N is set to 1.
+
 : **agoogle()**
 Searches for USENET postings from authors using google groups.
 
 : **allulimit()**
 Sets all ulimit values to "unlimited".
 
-: **ansi-colors()**
-Prints a colored table of available ansi color codes (to be used in escape
-sequences) and the colors they represent.
+: **any()**
+Lists processes matching given pattern.
 
 : **aoeu(), asdf(), uiae()**
 Pressing the 'asdf' keys toggles between dvorak or neon and us keyboard
 layout.
 
-: **audioburn()**
-Burns the files in ~/ripps (see audiorip() below) to an audio CD.
-Then prompts the user if she wants to remove that directory. You might need
-to tell audioburn which cdrom device to use like:
-"DEVICE=/dev/cdrom audioburn"
+: **apache2-ssl-certificate()**
+Advices the user how to create self signed certificates.
 
-: **audiorip()**
-Creates directory ~/ripps, if it does not exist. Then rips audio CD into
-it. Then prompts the user if she wants to burn a audio CD with audioburn()
-(see above). You might need to tell audiorip which cdrom device to use like:
-"DEVICE=/dev/cdrom audioburn"
+: **asc()**
+Login on the host provided as argument using autossh. Then reattach a GNU screen
+session if a detached session is around or detach a currently attached screen or
+else start a new screen.  This is especially useful for roadwarriors using GNU
+screen and ssh.
 
 : **bk()**
 Simple backup of a file or directory using cp(1). The target file name is the
 original name plus a time stamp attached. Symlinks and file attributes like mode,
 ownership and timestamps are preserved.
 
-: **brltty()**
-The brltty(1) program provides a braille display, so a blind person can access
-the console screen. This wrapper function works around problems with some
-environments (f. e. utf8).
+: **cdiff()**
+Runs a recursive diff(1) over two given directories trying to find the
+smallest set of changes. Three lines of context will be printed and binary
+files filtered out.
 
 : **cdrecord()**
 If the original cdrecord is not installed, issues a warning to the user to
 use the wodim binary instead. Wodim is the debian fork of Joerg Schillings
 cdrecord.
 
+: **cdt()**
+Creates a temporary directory using mktemp. Then changes current
+working directory to it.
+
+: **changed()**
+Lists files in current directory, which have been changed within the
+last N days. N is an integer to be passed as first and only argument.
+If no argument is specified N is set to 1.
+
+: **check_com()**
+Returns true if given command exists either as program, function, alias,
+builtin or reserved word. If the option -c is given, only returns true,
+if command is a program.
+
+: **checkhome()**
+Changes directory to $HOME on first invocation of zsh. This is neccessary on
+grml systems with autologin.
+
 : **cl()**
 Changes current directory to the one supplied by argument and lists the files
 in it, including file names starting with ".".
 
+: **cvsa()**
+Adds and commits the given files using cvs(1). The commit message will be
+'initial checkin'.
+
+: **cvsd()**
+Shows a cvs diff of the arguments in $PAGER.
+
+: **cvsl()**
+Shows the cvs log in $PAGER.
+
+: **cvsq()**
+Runs a cvs update.
+
+: **cvsr()**
+Generates a changelog using rcs2log and shows it in $PAGER.
+
+: **cvss()**
+Shows cvs status of given files.
+
+: **dchange()**
+Shows the changelog of given package in $PAGER.
+
 : **debbug()**
 Searches the Debian bug tracking system (bugs.debian.org) for Bug numbers,
 email addresses of submitters or any string given on the command line.
@@ -303,75 +542,80 @@ Shows bug report for debian given by number in mailbox format.
 Tells the user to use grml-debootstrap, if she wants to install debian to
 harddisk.
 
-: **dirspace()**
-Shows the disk usage of the directories given in human readable format;
-defaults to $path.
+: **deswap()**
+A trick from $LINUX-KERNELSOURCE/Documentation/power/swsusp.txt. It brings
+back interactive responsiveness after suspend, when the system is swapping
+heavily.
 
 : **disassemble()**
 Translates C source code to assembly and ouputs both.
 
+: **dmoz()**
+Searches for the first argument (optional) in the Open Directory Project
+(See http://www.dmoz.org/docs/en/about.html).
+
+: **dnews()**
+Shows the NEWS file for the given package in $PAGER.
+
 : **doc()**
 Takes packagename as argument. Sets current working directory to
 /usr/share/doc/<packagename> and prints out a directory listing.
 
-: **fir()**
-Opens given URL with Firefox (Iceweasel on Debian). If there is already an
-instance of firefox running, attaches to the first window found and opens the
-URL in a new tab (this even works across an ssh session).
-
-: **fluxkey-change()**
-Switches the key combinations for changing current workspace under fluxbox(1)
-from Alt-[0-9] to Alt-F[0-9] and vice versa by rewriting $HOME/.fluxbox/keys.
-Requires the window manager to reread configuration to take effect.
+: **dwicti()**
+Looks up the first argument (optional) in the german Wiktionary
+which is an online dictionary (See: http://de.wiktionary.org/).
 
-: **genthumbs()**
-A simple thumbnails generator. Resizes images (i. e. files that end in ".jpg",
-".jpeg", ".gif" or ".png") to 100x200. Output files are named "thumb-<original
-filename>". Creates an index.html with title "Images" showing the
-thumbnails as clickable links to the respective original file.
-//Warning:// On start genthumbs() silently removes a possibly existing "index.html"
-and all files and/or directories beginning with "thumb-" in current directory!
+: **edalias()**
+Edit given alias.
 
-: **getair()**
-Tries to download, unpack and run AIR (imaging software) version 1.2.8.
+: **edfunc()**
+Edit given shell function.
 
-: **getgizmo()**
-Tries to download and install Gizmo (VoIP software) for Debian.
+: **ewicti()**
+Looks up the first argument (optional in the english Wiktionary
+which is an online dictionary (See: http://en.wiktionary.org/).
 
-: **getskype()**
-Tries to download and install Skype (VoIP software) for Debian.
+: **exirename()**
+Renames image files based on date/time informations in their exif headers.
 
-: **getskypebeta()**
-Downloads and installs newer version of Skype.
+: **fir()**
+Opens given URL with Firefox (Iceweasel on Debian). If there is already an
+instance of firefox running, attaches to the first window found and opens the
+URL in a new tab (this even works across an ssh session).
 
-: **getxlite()**
-Tries to download and unpack X-lite (VoIP software) from counterpath.com into
-~/tmp.
+: **freload()**
+Reloads an autoloadable shell function (See autoload in zshbuiltins(1)).
 
-: **git-get-diff()**
-Opens a specific git commitdiff from kernel.org in default browser. Tree is
-chosen by the environment variable GITTREE which defaults to Linus Torvalds'
-kernel tree.
+: **get_tw_cli()**
+Fetches 3ware RAID controller software using get_3ware(1).
 
-: **git-get-commit()**
-Opens a specific git commit from kernel.org in default browser. The tree to
-fetch from is controlled by the environment variable GITTREE which defaults
-to Linus Torvalds' kernel tree.
+: **gex()**
+Performs an exact (i. e. quoted) web search using Google.
 
-: **git-get-plaindiff()**
-Fetches specific git diff from kernel.org. The tree is controlled by the
-environment variable GITTREE which defaults to Linus Torvalds' kernel tree.
+: **ggogle()**
+Searches the arguments on Google Groups, a web to USENET gateway.
 
-: **greph()**
-Searches the zsh command history for a regular expression.
+: **google()**
+Searches the search engine Google using arguments as search string.
 
 : **hex()**
 Prints the hexadecimal representation of the number supplied as argument
 (base ten only).
 
+: **hgdi()**
+Use GNU diff with options -ubwd for mercurial.
+
+: **hgstat()**
+Displays diffstat between the revision given as argument and tip (no
+argument means last revision).
+
 : **hidiff()**
 Outputs highlighted diff; needs highstring(1).
 
+: **ipv6-tunnel()**
+Sets up an IPv6 tunnel on interface sit1. Needs one argument -
+either "start", "stop" or "status".
+
 : **is4()**
 Returns true, if zsh version is equal or greater than 4, else false.
 
@@ -402,70 +646,83 @@ Returns true, if running on a grml system from a live cd, else false.
 : **isgrmlsmall()**
 Returns true, if run on grml-small, else false.
 
+: **iso2utf()**
+Changes every occurrence of the string iso885915 or ISO885915 in
+environment variables to UTF-8.
+
 : **isutfenv()**
 Returns true, if run within an utf environment, else false.
 
-: **lcheck()**
-Lists libraries that define the symbol containing the string given as
-parameter.
+: **iwclient()**
+Searches a wireless interface and runs dhclient(8) on it.
 
 : **limg()**
 Lists images (i. e. files ending with ".jpg", ".gif" or ".png") in current
 directory.
 
+: **manzsh()**
+Shows the zshall manpage and jumps to the first match of the regular
+expression optionally given as argument (Needs qma(1)).
+
 : **mcd()**
 Creates directory including parent directories, if necessary. Then changes
 current working directory to it.
 
+: **mdiff()**
+Diffs the two arguments recursively and writes the
+output (unified format) to a timestamped file.
+
+: **memusage()**
+Prints the summarized memory usage in bytes.
+
+: **mggogle()**
+Searches Google Groups for a USENET message-ID.
+
 : **minimal-shell()**
-Spawns a absolute minimal Korn shell. It references no files in /usr, so
-that file system can be unmounted.
+Spawns a minimally set up MirBSD Korn shell. It references no files in /usr,
+so that file system can be unmounted.
 
-: **mkaudiocd()**
-Renames all mp3 files in ~/ripps (see audiorip above) to lowercase and
-replaces spaces in file names with underscores. Then mkaudiocd()
-normalizes the files and recodes them to WAV.
+: **modified()**
+Lists files in current directory, which have been modified within the
+last N days. N is an integer to be passed as first and only argument.
+If no argument is specified N is set to 1.
 
-: **mkiso()**
-Creates an iso9660 filesystem image with Rockridge and Joliet extensions
-enabled using mkisofs(8). Prompts the user for volume name, filename and
-target directory.
+: **netcraft()**
+Asks netcraft.com for informations about the site given as argument.
 
-: **mmake()**
-Runs "make install" and logs the output under ~/.errorlogs/; useful for
-a clean deinstall later.
+: **nt()**
+A helper function for the "e" glob qualifier to list all files newer
+than a reference file.
+\
+Example usages:
+```
+% NTREF=/reference/file
+% ls -l *(e:nt:)
+% # Inline:
+% ls -l *(e:'nt /reference/file':)
+```
 
-: **ogg2mp3_192()**
-Recodes an ogg file to mp3 with a bitrate of 192.
+: **oleo()**
+Translates the given word using the english - german online
+dictionary dict.leo.org.
 
 : **peval()**
 Evaluates a perl expression; useful as command line
 calculator, therefore also available as "calc".
 
-: **plap()**
-Lists all occurrences of the string given as argument in current $PATH.
-
-: **purge()**
-Removes typical temporary files (i. e. files like "*~", ".*~", "#*#", "*.o",
-"a.out", "*.core", "*.cmo", "*.cmi" and ".*.swp") from current directory.
-Asks for confirmation.
-
-: **readme()**
-Opens all README-like files in current working directory with the program
-defined in the $PAGER environment variable.
+: **profile()**
+Runs a command in $SHELL with profiling enabled (See startup variable
+ZSH_PROFILE_RC above).
 
 : **refunc()**
 Reloads functions given as parameters.
 
-: **regcheck()**
-Checks whether a regular expression (first parameter) matches a string
-(second parameter) using perl.
+: **salias()**
+Creates an alias whith sudo prepended, if $EUID is not zero. Run "salias -h"
+for details. See also xunfunction() below.
 
-: **selhist()**
-Greps the history for the string provided as parameter and shows the numbered
-findings in default pager. On exit of the pager the user is prompted for a
-number. The shells readline buffer is then filled with the corresponding
-command line.
+: **setenv()**
+Reimplementation of the csh(1) builtin setenv.
 
 : **show-archive()**
 Lists the contents of a (compressed) archive with the appropriate programs.
@@ -478,20 +735,20 @@ Lists the content of a gzipped tar archive in default pager.
 Shows the content of a zip archive in default pager.
 
 : **simple-extract()**
-Tries to uncompress/unpack given file with the appropriate programs. The
-choice is made along the filename ending.
+Tries to uncompress/unpack given files with the appropriate programs. If an URI
+starting with https, http or ftp is provided simple-extract tries to download
+and then uncompress/unpack the file. The choice is made along the filename
+ending. simple-extract will not delete the original archive (even on .gz,.bz2 or
+.xz) unless you use the '-d' option.
 
-: **slow_print()**
-Prints the arguments slowly by sleeping 0.08 seconds between each character.
+: **sll()**
+Prints details of symlinks given as arguments.
 
 : **smartcompress()**
 Compresses/archives the file given as first parameter. Takes an optional
 second argument, which denotes the compression/archive type as typical
 filename extension; defaults to "tar.gz".
 
-: **smartindent()**
-Indents C source code files given; uses Kernighan & Ritchie style.
-
 : **sshot()**
 Creates directory named shots in user's home directory, if it does not yet
 exist and changes current working directory to it. Then sleeps 5 seconds,
@@ -499,22 +756,55 @@ so you have plenty of time to switch desktops/windows. Then makes a screenshot
 of the current desktop. The result is stored in ~/shots to a timestamped
 jpg file.
 
-: **startx()**
-Initializes an X session using startx(1) if /etc/X11/xorg.conf exists, else
-issues a Warning to use the grml-x(1) script. Can be overridden by using
-/usr/bin/startx directly.
+: **ssl-cert-fingerprints**
+Prints the SHA512, SHA256, SHA1 and MD5 digest of a x509 certificate.
+First and only parameter must be a file containing a certificate. Use
+/dev/stdin as file if you want to pipe a certificate to these
+functions.
+
+: **ssl-cert-info**
+Prints all information of a x509 certificate including the SHA512,
+SHA256, SHA1 and MD5 digests. First and only parameter must be a file
+containing a certificate. Use /dev/stdin as file if you want to pipe a
+certificate to this function.
+
+: **ssl-cert-sha512(), ssl-cert-sha256(), ssl-cert-sha1(), ssl-cert-md5()**
+Prints the SHA512, SHA256, SHA1 respective MD5 digest of a x509
+certificate. First and only parameter must be a file containing a
+certificate. Use /dev/stdin as file if you want to pipe a certificate
+to this function.
+
+: **Start(), Restart(), Stop(), Force-Reload(), Reload()**
+Functions for controlling daemons.
+```
+Example usage:
+% Restart ssh
+```
+
+: **swiki()**
+Searches articles in the german Wikipedia for the term given as argument.
+
+: **trans()**
+Translates a word from german to english (-D) or vice versa (-E).
 
-: **status()**
-Shows some information about current system status.
+: **uchange()**
+Shows upstreams changelog of a given package in $PAGER.
 
 : **udiff()**
 Makes a unified diff of the command line arguments trying hard to find a
 smaller set of changes. Descends recursively into subdirectories. Ignores
 hows some information about current status.
 
-: **urlencode()**
-Takes a string as its first argument and prints it RFC 2396 URL encoded to
-standard out.
+: **uopen()**
+Downloads and displays a file using a suitable program for its
+Content-Type.
+
+: **uprint()**
+Works around the "print -l ${(u)foo}"-limitation on zsh older than 4.2.
+
+: **utf2iso()**
+Changes every occurrence of the string UTF-8 or utf-8 in environment
+variables to iso885915.
 
 : **viless()**
 Vim as pager.
@@ -524,13 +814,37 @@ Wrapper for vim(1). It tries to set the title and hands vim the environment
 variable VIM_OPTIONS on the command line. So the user may define command
 line options, she always wants, in her .zshrc.local.
 
-: **vman()**
-Use vim(1) as manpage reader.
+: **whatwhen()**
+Searches the history for a given pattern and lists the results by date.
+The first argument is the search pattern. The second and third ones are
+optional and denote a search range (default: -100).
+
+: **wikide()**
+Looks up the argument on Wikipedia (german).
+
+: **wikien()**
+Looks up the argument on Wikipedia (english).
+
+: **wodeb()**
+Searches the list of official debian packages for the term given as
+first argument. The optional second argument denotes the distribution
+(stable, testing or unstable) and defaults to unstable.
+
+: **xcat()**
+Tries to cat(1) file(s) given as parameter(s). Always returns true.
+See also xunfunction() below.
 
-: **xinit()**
-Initializes an X session using xinit(1) if /etc/X11/xorg.conf exists, else
-issues a Warning to use the grml-x(1) script. Can be overridden by using
-/usr/bin/xinit directly.
+: **xsource()**
+Tries to source the file(s) given as parameter(s). Always returns true.
+See zshbuiltins(1) for a detailed description of the source command.
+See also xunfunction() below.
+
+: **xtrename()**
+Changes the title of xterm window from within screen(1). Run without
+arguments for details.
+
+: **xunfunction()**
+Removes the functions salias, xcat, xsource, xunfunction and zrcautoload.
 
 : **zg()**
 Search for patterns in grml's zshrc using perl. zg takes no or exactly one
@@ -538,6 +852,16 @@ option plus a non empty pattern. Run zg without any arguments for a listing
 of available command line switches. For a zshrc not in /etc/zsh, set the
 GRML_ZSHRC environment variable.
 
+: **zrcautoload()**
+Wrapper around the autoload builtin. Loads the definitions of functions
+from the file given as argument. Searches $fpath for the file. See also
+xunfunction() above.
+
+: **zrclocal()**
+Sources /etc/zsh/zshrc.local and ${HOME}/.zshrc.local. These are the files
+where own modifications should go. See also zshbuiltins(1) for a description
+of the source command.
+
 
 == ALIASES ==
 //grmlzshrc// comes with a wide array of predefined aliases to ease the user's
@@ -611,10 +935,19 @@ while watching a movie.
 : **CO** (//./configure//)
 Prepares compilation for building program from source.
 
+: **cp** (//nocorrect cp//)
+cp(1) without spelling correction.
+
 : **da** (//du -sch//)
 Prints the summarized disk usage of the arguments as well as a grand total
 in human readable format.
 
+: **dbp** (//dpkg-buildpackage//)
+Builds binary or source packages from sources (See: dpkg-buildpackage(1)).
+
+: **debs-by-size** (//grep-status -FStatus -sInstalled-Size,Package -n "install ok installed" | paste -sd "  \n" | sort -rn//)
+Prints installed Packages sorted by size (descending).
+
 : **default** (//echo -en [ escape sequence ]//)
 Sets font of xterm to "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15"
 using escape sequence.
@@ -634,6 +967,10 @@ can watch videos on a virtual tty.
 : **g** (//git//)
 Revision control system by Linus Torvalds.
 
+: **ge** (//grep-excuses//)
+Searches the testing excuses files for a specific maintainer (See:
+grep-excuses(1)).
+
 : **grep** (//grep --color=auto//)
 Shows grep output in nice colors, if available.
 
@@ -646,6 +983,9 @@ Scans for new devices and updates /etc/fstab according to the findings.
 : **grml-version** (//cat /etc/grml_version//)
 Prints version of running grml.
 
+: **hbp** (//hg-buildpackage//)
+Helper program to maintain Debian packages with mercurial.
+
 : **http** (//python -m SimpleHTTPServer//)
 Basic HTTP server implemented in python. Listens on port 8000/tcp and
 serves current directory. Implements GET and HEAD methods.
@@ -665,6 +1005,9 @@ Runs the function H-Glob() to expand or explain wildcards.
 : **hide** (//echo -en [ escape sequence ]//)
 Tries to hide xterm window using escape sequence.
 
+: **hidiff** (//histring -fE '^Comparing files .*|^diff .*' | histring -c yellow -fE '^\-.*' | histring -c green -fE '^\+.*'//)
+If histring(1) is installed, highlight important stuff in diff(1) output.
+
 : **huge** (//echo -en [ escape sequence ]//)
 Sets huge font in xterm ("-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15")
 using escape sequence.
@@ -695,6 +1038,9 @@ if available. Includes file names starting with "." except "." and
 : **ll** (//ls -l --color=auto//)
 Lists files in long colored output format.
 
+: **llog** (//$PAGER /var/log/syslog//)
+Opens syslog in pager.
+
 : **ls** (//ls -b -CF --color=auto//)
 Lists directory printing octal escapes for nongraphic characters.
 Entries are listed by columns and an indicator for file type is appended
@@ -739,11 +1085,33 @@ Lists only executable files.
 : **md** (//mkdir -p//)
 Creates directory including parent directories, if necessary
 
+: **mdstat** (//cat /proc/mdstat//)
+Lists all active md (i.e. linux software raid) devices with some information
+about them.
+
 : **medium** (//echo -en [ escape sequence ]//)
 Sets medium sized font
 ("-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-15") in xterm
 using escape sequence.
 
+: **mkdir** (//nocorrect mkdir//)
+mkdir(1) without spelling correction.
+
+: **mq** (//hg -R $(readlink -f $(hg root)/.hg/patches)//)
+Executes the commands on the versioned patch queue from current repository.
+
+: **mv** (//nocorrect mv//)
+mv(1) without spelling correction.
+
+: **rd** (//rmdir//)
+Short rmdir(1) (remove directory).
+
+: **rm** (//nocorrect rm//)
+rm(1) without spelling correction.
+
+: **rmcdir** (//'cd ..; rmdir $OLDPWD || cd $OLDPWD//)
+rmdir current working directory
+
 : **screen** (///usr/bin/screen -c ${HOME}/.screenrc//)
 If invoking user is root, starts screen session with /etc/grml/screenrc
 as config file. If invoked by a regular user, start a screen session
@@ -765,6 +1133,12 @@ anybody else.
 Grants read, write and execute permission of a file to the owner and
 read-only plus execute permission to anybody else.
 
+: **S** (//screen//)
+Short for screen(1).
+
+: **s** (//ssh//)
+Short for ssh(1).
+
 : **semifont** (//echo -en [ escape sequence ]//)
 Sets font of xterm to
 "-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15" using
@@ -781,11 +1155,25 @@ escape sequence.
 If user is running a grml live-CD, dont ask for any password, if she
 wants a root shell.
 
+: **term2iso** (//echo 'Setting terminal to iso mode' ; print -n '\e%@'//)
+Sets mode from UTF-8 to ISO 2022 (See:
+http://www.cl.cam.ac.uk/~mgk25/unicode.html#term).
+
+: **term2utf** (//echo 'Setting terminal to utf-8 mode'; print -n '\e%G'//)
+Sets mode from ISO 2022 to UTF-8 (See:
+http://www.cl.cam.ac.uk/~mgk25/unicode.html#term).
+
 : **tiny** (//echo -en [ escape sequence ]//)
 Sets tiny xterm font
 ("-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15") using escape
 sequence.
 
+: **tlog** (//tail -f /var/log/syslog//)
+Prints syslog continuously (See tail(1)).
+
+: **top10** (//print -l ? ${(o)history%% *} | uniq -c | sort -nr | head -n 10//)
+Prints the ten most used shell commands.
+
 : **truec** (//truecrypt [ mount options ]//)
 Mount a truecrypt volume with some reasonable mount options
 ("rw,sync,dirsync,users,uid=1000,gid=users,umask=077" and "utf8", if
@@ -795,6 +1183,19 @@ available).
 Performs a system update followed by a system upgrade using aptitude; run
 by sudo, if necessary. See au and ag above.
 
+: **url-quote** (//autoload -U url-quote-magic ; zle -N self-insert url-quote-magic//)
+After calling, characters of URLs as typed get automatically escaped, if necessary, to
+protect them from the shell.
+
+: **0** (//return 0//)
+Gives a clean prompt (i.e. without $?).
+
+: **$(uname -r)-reboot** (//kexec -l --initrd=/boot/initrd.img-"$(uname -r)" --command-line=\"$(cat /proc/cmdline)\" /boot/vmlinuz-"$(uname -r)"//)
+Reboots using kexec(8) and thus reduces boot time by skipping hardware initialization of BIOS/firmware.
+
+: **...** (//cd ../..///)
+Changes current directory two levels higher.
+
 : **?** (//qma zshall//)
 Runs the grml script qma (quick manual access) to build the collected man
 pages for the z-shell. This compressed file is kept at
@@ -967,22 +1368,32 @@ possibly inclusion.
 
 
 = STATUS =
-This manual page is supposed to be a **reference** manual for //grmlzshrc//.
+This manual page is the **reference** manual for //grmlzshrc//.
+
 That means that in contrast to the existing refcard it should document **every**
-aspect of the setup. That is currently **not** the case. Not for a long time
-yet. Contributions are highly welcome.
+aspect of the setup.
+
+This manual is currently not complete. If you want to help improving it, visit
+the following pages:
+
+http://wiki.grml.org/doku.php?id=zshrcmanual
+
+http://lists.mur.at/pipermail/grml/2009-August/004609.html
+
+Contributions are highly welcome.
 
 
 = AUTHORS =
-This manpage was written by Frank Terbeck <ft@grml.org> and Joerg Woelke
-<joewoe@fsmail.de>.
+This manpage was written by Frank Terbeck <ft@grml.org>, Joerg Woelke
+<joewoe@fsmail.de>, Maurice McCarthy <manselton@googlemail.com> and Axel
+Beckert <abe@deuxchevaux.org>.
 
 
 = COPYRIGHT =
-Copyright (c) 2009, grml project <http://grml.org>
+Copyright (c) 2009-2011 Grml project <http://grml.org>
 
 This manpage is distributed under the terms of the GPL version 2.
 
 Most parts of grml's zshrc are distributed under the terms of GPL v2, too,
-except for **accept-line()** and **vcs_info()**, which are distributed under
-the same conditions as zsh itself (which is BSD-like).
+except for **accept-line()** which are distributed under the same conditions
+as zsh itself (which is BSD-like).