X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=43329256727762ed33505c65f3415f4c4006fd4f;hb=0e313012c03842191f78762cfdc8baf3207bfe9b;hp=46d3d64b91994c7bc354e0ab98d8ff2d7274a9a2;hpb=fb0f5303d1e6bc334c009501cbff754b38e8cff9;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 46d3d64..4332925 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -3,7 +3,7 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Fre Mai 25 02:03:29 CEST 2007 [mika] +# Latest change: Sam Jun 09 00:44:57 CEST 2007 [mika] ################################################################################ # This file is sourced only for interactive shells. It # should contain commands to set up aliases, functions, @@ -40,6 +40,7 @@ printf " rm ${xof}\n\n" printf ' -!- Note, that this message will *not* go away, unless you yourself\n' printf ' -!- resolve the situation manually.\n\n' + BROKEN_COMPLETION_DIR=1 fi unset xof # }}} @@ -151,12 +152,16 @@ # completion functions go to /etc/zsh/completion.d # function files may be put into /etc/zsh/functions.d, from where they # will be automatically autoloaded. - [[ -d /etc/zsh/completion.d ]] && fpath+=( /etc/zsh/completion.d ) - if [[ -d /etc/zsh/functions.d ]] ; then - fpath+=( /etc/zsh/functions.d ) - for func in /etc/zsh/functions.d/[^_]*[^~] ; do - autoload -U ${func:t} - done + if [ -n "$BROKEN_COMPLETION_DIR" ] ; then + print 'Warning: not setting completion directories because broken files have been found.'>&2 + else + [[ -d /etc/zsh/completion.d ]] && fpath+=( /etc/zsh/completion.d ) + if [[ -d /etc/zsh/functions.d ]] ; then + fpath+=( /etc/zsh/functions.d ) + for func in /etc/zsh/functions.d/[^_]*[^~] ; do + autoload -U ${func:t} + done + fi fi # automatically remove duplicates from these arrays @@ -178,14 +183,14 @@ [[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char [[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char # ncurses stuff: - [[ "$terminfo[kcuu1]" == "O"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history - [[ "$terminfo[kcud1]" == "O"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history - [[ "$terminfo[kcuf1]" == "O"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char - [[ "$terminfo[kcub1]" == "O"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char - [[ "$terminfo[khome]" == "O"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line - [[ "$terminfo[kend]" == "O"* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line - [[ "$terminfo[khome]" == "O"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line - [[ "$terminfo[kend]" == "O"* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line + [[ "$terminfo[kcuu1]" == $'\eO'* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history + [[ "$terminfo[kcud1]" == $'\eO'* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history + [[ "$terminfo[kcuf1]" == $'\eO'* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char + [[ "$terminfo[kcub1]" == $'\eO'* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char + [[ "$terminfo[khome]" == $'\eO'* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line + [[ "$terminfo[kend]" == $'\eO'* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line + [[ "$terminfo[khome]" == $'\eO'* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line + [[ "$terminfo[kend]" == $'\eO'* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line fi ## keybindings (run 'bindkeys' for details, more details via man zshzle) @@ -197,8 +202,8 @@ fi #if [[ "$TERM" == screen ]]; then bindkey '\e[1~' beginning-of-line # home bindkey '\e[4~' end-of-line # end - bindkey "^[[A" up-line-or-search # cursor up - bindkey "^[[B" down-line-or-search # - + bindkey '\e[A' up-line-or-search # cursor up + bindkey '\e[B' down-line-or-search # - bindkey '^x' history-beginning-search-backward # alternative ways of searching the shell history # bindkey -s '^L' "|less\n" # ctrl-L pipes to less # bindkey -s '^B' " &\n" # ctrl-B runs it in the background @@ -571,12 +576,12 @@ fi WHITE="%{${fg[white]}%}" NO_COLOUR="%{${reset_color}%}" else - BLUE="%{%}" - RED="%{%}" - GREEN="%{%}" - CYAN="%{%}" - WHITE="%{%}" - NO_COLOUR="%{%}" + BLUE=$'%{\e[1;34m%}' + RED=$'%{\e[1;31m%}' + GREEN=$'%{\e[1;32m%}' + CYAN=$'%{\e[1;36m%}' + WHITE=$'%{\e[1;37m%}' + NO_COLOUR=$'%{\e[0m%}' fi EXITCODE="%(?..%?%1v )" @@ -660,8 +665,8 @@ ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " alias md='mkdir' # see http://www.cl.cam.ac.uk/~mgk25/unicode.html#term for details - alias term2iso="echo 'Setting terminal to iso mode' ; echo -e '%@'" - alias term2utf="echo 'Setting terminal to utf-8 mode'; echo -e '%G'" + alias term2iso="echo 'Setting terminal to iso mode' ; print -n '\e%@'" + alias term2utf="echo 'Setting terminal to utf-8 mode'; print -n '\e%G'" alias utf2iso='if isutfenv ; then for ENV in `env | grep UTF` ; do @@ -690,7 +695,7 @@ ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " fi ' - # I like clean prompt, so provide simple way to get that +# I like clean prompt, so provide simple way to get that alias 0 &>/dev/null || functions 0 &>/dev/null || alias 0='return 0' # truecrypt; use e.g. via 'truec /dev/ice /mnt/ice' or 'truec -i' @@ -783,8 +788,9 @@ Enjoy your grml system with the zsh!$reset_color" fi } - isgrmlcd && alias su="sudo su" # change to user root - alias tlog="tail -f /var/log/syslog" # take a look at the syslog + isgrmlcd && alias su="sudo -s" # get a root shell + alias llog="$PAGER /var/log/syslog" # take a look at the syslog + alias tlog="tail -f /var/log/syslog" # follow the syslog alias zshskel="source /etc/skel/.zshrc" # source skeleton zshrc fi @@ -1227,6 +1233,66 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"." fi } + # just press 'asdf' keys to toggle between dvorak and us keyboard layout + aoeu() { + if [ -n "$XKEYBOARD" -a -n "$KEYTABLE" ] ; then + echo -n "Switching to $KEYTABLE keyboard layout: " + [ -z "$DISPLAY" ] && $SUDO loadkeys $KEYTABLE &>/dev/null || setxkbmap $XKEYBOARD &>/dev/null + else + echo -n 'Switching to us keyboard layout: ' + [ -z "$DISPLAY" ] && $SUDO loadkeys us &>/dev/null || setxkbmap us &>/dev/null + fi + echo 'Done' + } + asdf() { + echo -n 'Switching to dvorak keyboard layout: ' + [ -z "$DISPLAY" ] && $SUDO loadkeys dvorak &>/dev/null || setxkbmap dvorak &>/dev/null + echo 'Done' + } + # just press 'asdf' key to toggle from neon layout to us keyboard layout + uiae() { + echo -n 'Switching to us keyboard layout: ' + setxkbmap us && echo 'Done' || echo 'Failed' + } + + # set up an ipv6 tunnel + ipv6-tunnel() { + case $1 in + start) + if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then + print 'ipv6 tunnel already set up, nothing to be done.' + print 'execute: "ifconfig sit1 down ; ifconfig sit0 down" to remove ipv6-tunnel.' ; return 1 + else + [ -n "$PUBLIC_IP" ] || local PUBLIC_IP=$(ifconfig $(route -n | awk '/^0\.0\.0\.0/{print $8; exit}') | \ + awk '/inet addr:/ {print $2}' | tr -d 'addr:') + [ -n "$PUBLIC_IP" ] || { print 'No $PUBLIC_IP set and could not determine default one.' ; return 1 } + local IPV6ADDR=$(printf "2002:%02x%02x:%02x%02x:1::1" $(print ${PUBLIC_IP//./ })) + print -n "Setting up ipv6 tunnel $IPV6ADDR via ${PUBLIC_IP}: " + ifconfig sit0 tunnel ::192.88.99.1 up + ifconfig sit1 add "$IPV6ADDR" && print done || print failed + fi + ;; + status) + if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then + print 'ipv6 tunnel available' ; return 0 + else + print 'ipv6 tunnel not available' ; return 1 + fi + ;; + stop) + if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then + print -n 'Stopping ipv6 tunnel (sit0 + sit1): ' + ifconfig sit1 down ; ifconfig sit0 down && print done || print failed + else + print 'No ipv6 tunnel found, nothing to be done.' ; return 1 + fi + ;; + *) + print "Usage: ipv6-tunnel [start|stop|status]">&2 ; return 1 + ;; + esac + } + # Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html # bash() { # NO_SWITCH="yes" command bash "$@" @@ -1262,5 +1328,9 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"." fi # }}} +# add variable to be able to check whether the file has been read {{{ + ZSHRC_GLOBAL_HAS_BEEN_READ=1 +# }}} + ## END OF FILE ################################################################# # vim:foldmethod=marker expandtab