#!/bin/zsh
# Filename: qma
# Purpose: "quick manual access"
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# 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.
-# Latest change: Sam Dez 02 18:40:18 CET 2006 [mika]
+# Latest change: Sam Dez 16 17:24:05 CET 2006 [maddi]
################################################################################
-# Idea for this script and basic functionally by Matthias Kopfermann <maddi@grml.org>.
-
. /etc/grml/lsb-functions
. /etc/grml/script-functions
check4progs man lzop vim || exit 1
-MANDIR=${MANDIR:-$HOME/man}
VERSION='0.1'
+MANDIR=${MANDIR:-$HOME/man}
if ! [ -d "$MANDIR" ] ; then
einfo "Creating $MANDIR."
mkdir $MANDIR ; eend $?
SECTION="${1}"
SECTIONFILE=".${1}"
MANPAGE="$2"
+ SEARCH="$3"
;;
*)
SECTION=''
MANPAGE="$1"
+ SEARCH="$2"
;;
esac
+
if [ -z "$MANPAGE" ] ; then
usage
fi
-if ! [ -f "${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo" ] ; then
- einfo "Writing manpage to ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt"
+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 > ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt ; eend $?
+ man $SECTION $MANPAGE | lzop -U >$QUICKMAN ; eend $?
einfo "Compressing manpage with lzop"
- lzop -U ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt ; eend $?
+ 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 -c "set ft=man | set hlsearch | set ignorecase" +/"$SEARCH" =( lzop -cd $MANDIR/${MANPAGE}${SECTIONFILE}.txt.lzo)
+ vim -S =( echo $vimconfig ) +/"$SEARCH" =( lzop -cd ${QUICKMAN} )
else
- vim -c 'set ft=man' =( lzop -cd $MANDIR/${MANPAGE}${SECTIONFILE}.txt.lzo)
+ vim -S =( echo $vimconfig ) =( lzop -cd $QUICKMAN )
fi
einfo "Thanks for flying qma using vim and lzop." ; eend 0