--- /dev/null
+#!/bin/zsh
+# Filename: qma
+# Purpose: "quick manual access"
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>, Matthias Kopfermann <maddi@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+################################################################################
+
+. /etc/grml/lsb-functions
+. /etc/grml/script-functions
+
+check4progs man lzop vim || exit 1
+
+VERSION='0.1'
+
+MANDIR=${MANDIR:-$HOME/man}
+if ! [ -d "$MANDIR" ] ; then
+ einfo "Creating $MANDIR."
+ mkdir $MANDIR ; eend $?
+fi
+
+usage() {
+ eerror "Usage: qma [section] manpage" ; eend 1
+ exit 1
+}
+
+case $1 in
+ -h*|--h*)
+ usage
+ ;;
+ -v*|--v*)
+ einfo "qma - version $VERSION" ; eend 0
+ exit 0
+ ;;
+ [0-9])
+ SECTION="${1}"
+ SECTIONFILE=".${1}"
+ MANPAGE="$2"
+ SEARCH="$3"
+ ;;
+ *)
+ SECTION=''
+ MANPAGE="$1"
+ SEARCH="$2"
+ ;;
+esac
+
+
+if [ -z "$MANPAGE" ] ; then
+ usage
+fi
+
+QUICKMAN="${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo"
+
+if ! [ -f "$QUICKMAN" ] ; then
+ einfo "Writing manpage to $QUICKMAN"
+ if man $SECTION $MANPAGE 1>/dev/null ; then
+ man $SECTION $MANPAGE | col -b | lzop -U >$QUICKMAN ; eend $?
+ einfo "Compressing manpage with lzop"
+ eend $?
+ else
+ exit 1
+ eend 1
+ fi
+fi
+
+vimconfig='
+ set filetype=man
+ "set hlsearch can be annoying so use <C-L> to dehighlight"
+ "shut up hlsearch when it confuses more than it helps and"
+ nn <silent> <C-L> :nohlsearch<cr>|redraw
+ "q should really end our document-reading like less does"
+ nn q :qa!<cr>
+ "different than q in that it quits only the current window when multiple windows "
+ nn Q :q!<cr>
+ "honor midnight-commander addicts :) "
+ nn <F10> :qa!<cr>
+ "use one wonderful vim feature to show all matches of the word in the document in ex-mode"
+ nn a ]I
+ "the other way round"
+ nn A [I
+ nn b <C-b>
+ nn <backspace> <C-f>
+ "nn f <C-f>
+ nn p }zz
+ "scroll the page down one line"
+ nn j <C-E>
+ "scroll the page up one line"
+ nn k <C-Y>
+ "the expectation of getting the next search via 'n' can not be ignored"
+ nn -n <ESC> :set invnumber<cr>
+ nn h :set invhlsearch<cr>
+ "Make toggling case-sensitive accessable via the letter i"
+ nn i :set invignorecase<cr>
+ "Make toggling case-sensitive accessable via the less convention via -i"
+ nn -i :set invignorecase<cr>
+ nn <space> <C-f>
+ nn <backspace> <C-b>
+ nn <enter> gg
+ nn S :split<cr>
+ nn V :vsplit<cr>
+ set filetype=man
+ set ignorecase
+ "Really not modify a document here"
+ set nomodifiable
+ set readonly
+ "We have a more modern approach to searching in vim!"
+ set incsearch
+'
+
+if [ -n "$SEARCH" ] ; then
+ vim -S =( echo $vimconfig ) +/"$SEARCH" =( lzop -cd ${QUICKMAN} )
+else
+ vim -S =( echo $vimconfig ) =( lzop -cd $QUICKMAN )
+fi
+
+einfo "Thanks for flying qma using vim and lzop." ; eend 0
+
+## END OF FILE #################################################################