#!/bin/zsh # Filename: qma # Purpose: "quick manual access" # Authors: grml-team (grml.org), (c) Michael Prokop , Matthias Kopfermann # 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 to dehighlight" "shut up hlsearch when it confuses more than it helps and" nn :nohlsearch|redraw "q should really end our document-reading like less does" nn q :qa! "different than q in that it quits only the current window when multiple windows " nn Q :q! "honor midnight-commander addicts :) " nn :qa! "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 nn "nn f nn p }zz "scroll the page down one line" nn j "scroll the page up one line" nn k "the expectation of getting the next search via 'n' can not be ignored" nn -n :set invnumber nn h :set invhlsearch "Make toggling case-sensitive accessible via the letter i" nn i :set invignorecase "Make toggling case-sensitive accessible via the less convention via -i" nn -i :set invignorecase nn nn nn gg nn S :split nn V :vsplit 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 #################################################################