+}
+#f4# Search Debian Bug Tracking System in mbox format
+debbugm() { bts show --mbox $1 } # provide bugnummer as "$1"
+#f4# Search DMOZ
+dmoz() { ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_} }
+#f4# Search German Wiktionary
+dwicti() { ${=BROWSER} http://de.wiktionary.org/wiki/${(C)1// /_} }
+#f4# Search English Wiktionary
+ewicti() { ${=BROWSER} http://en.wiktionary.org/wiki/${(C)1// /_} }
+#f4# Search Google Groups
+ggogle() { ${=BROWSER} "http://groups.google.com/groups?q=$*" }
+#f4# Search Google
+google() { ${=BROWSER} "http://www.google.com/search?&num=100&q=$*" }
+#f4# Search Google Groups for MsgID
+mggogle() { ${=BROWSER} "http://groups.google.com/groups?selm=$*" }
+#f4# Search Netcraft
+netcraft(){ ${=BROWSER} "http://toolbar.netcraft.com/site_report?url=$1" }
+#f4# Use German Wikipedia's full text search
+swiki() { ${=BROWSER} http://de.wikipedia.org/wiki/Spezial:Search/${(C)1} }
+#f4# search \kbd{dict.leo.org}
+oleo() { ${=BROWSER} "http://dict.leo.org/?search=$*" }
+#f4# Search German Wikipedia
+wikide() { ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}" }
+#f4# Search English Wikipedia
+wikien() { ${=BROWSER} http://en.wikipedia.org/wiki/"${(C)*}" }
+#f4# Search official debs
+wodeb() { ${=BROWSER} "http://packages.debian.org/search?keywords=$1&searchon=contents&suite=${2:=unstable}§ion=all" }
+
+#m# f4 gex() Exact search via Google
+check_com google && gex () { google "\"[ $1]\" $*" } # exact search at google
+
+# misc
+#f5# Backup \kbd{file {\rm to} file\_timestamp}
+bk() { cp -b ${1} ${1}_`date --iso-8601=m` }
+#f5# Copied diff
+cdiff() { diff -crd "$*" | egrep -v "^Only in |^Binary files " }
+#f5# cd to directoy and list files
+cl() { cd $1 && ls -a } # cd && ls
+#f5# Cvs add
+cvsa() { cvs add $* && cvs com -m 'initial checkin' $* }
+#f5# Cvs diff
+cvsd() { cvs diff -N $* |& $PAGER }
+#f5# Cvs log
+cvsl() { cvs log $* |& $PAGER }
+#f5# Cvs update
+cvsq() { cvs -nq update }
+#f5# Rcs2log
+cvsr() { rcs2log $* | $PAGER }
+#f5# Cvs status
+cvss() { cvs status -v $* }
+#f5# Disassemble source files using gcc and as
+disassemble(){ gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null }
+#f5# Firefox remote control - open given URL
+fir() { firefox -a firefox -remote "openURL($1)" }
+#f5# Create Directoy and \kbd{cd} to it
+mcd() { mkdir -p "$@"; cd "$@" } # mkdir && cd
+#f5# Unified diff to timestamped outputfile
+mdiff() { diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1" }
+#f5# Memory overview
+memusage(){ ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc }
+#f5# Show contents of tar file
+shtar() { gunzip -c $1 | tar -tf - -- | $PAGER }
+#f5# Show contents of tgz file
+shtgz() { tar -ztf $1 | $PAGER }
+#f5# Show contents of zip file
+shzip() { unzip -l $1 | $PAGER }
+#f5# Greps signature from file
+sig() { agrep -d '^-- $' "$*" ~/.Signature }
+#f5# Unified diff
+udiff() { diff -urd $* | egrep -v "^Only in |^Binary files " }
+#f5# (Mis)use \kbd{vim} as \kbd{less}
+viless() { vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}" }
+
+# download video from youtube
+ytdl() {
+ if ! [[ -n "$2" ]] ; then
+ print "Usage: ydtl http://youtube.com/watch?v=.... outputfile.flv">&2
+ return 1
+ else
+ wget -O${2} "http://youtube.com/get_video?"${${${"$(wget -o/dev/null -O- "${1}" | grep -e watch_fullscreen)"}##*watch_fullscreen\?}%%\&fs=*}
+ fi
+}