X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=44de6e8f1e565bc7be50fd573565a83d72ae006c;hb=2cf5d4eb6678279f7720fcee8e08e77aa76a68c6;hp=94373e1ade3f943923800bd63c8451ebb510911c;hpb=c5743df23827548f147983d841f040a02d5ba60d;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 94373e1..44de6e8 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -139,12 +139,14 @@ is43(){ } is433(){ - [[ $ZSH_VERSION == 4.3.<3->* || $ZSH_VERSION == 4.<4->* || $ZSH_VERSION == <5->* ]] && return 0 + [[ $ZSH_VERSION == 4.3.<3->* || $ZSH_VERSION == 4.<4->* \ + || $ZSH_VERSION == <5->* ]] && return 0 return 1 } is439(){ - [[ $ZSH_VERSION == 4.3.<9->* || $ZSH_VERSION == 4.<4->* || $ZSH_VERSION == <5->* ]] && return 0 + [[ $ZSH_VERSION == 4.3.<9->* || $ZSH_VERSION == 4.<4->* \ + || $ZSH_VERSION == <5->* ]] && return 0 return 1 } @@ -163,7 +165,10 @@ isgrmlcd(){ if isgrml ; then #f1# Checks whether or not you're running grml-small isgrmlsmall() { - [[ ${${${(f)"$( - # -> searches for word not in compressed files - # don't forget to quote '^', '~' and '#'! -setopt longlistjobs # display PID when suspending processes as well -setopt notify # report the status of backgrounds jobs immediately -setopt hash_list_all # Whenever a command completion is attempted, make sure \ - # the entire command path is hashed first. -setopt completeinword # not just at the end -setopt nohup # and don't kill them, either -setopt auto_pushd # make cd push the old directory onto the directory stack. -setopt nonomatch # try to avoid the 'zsh: no matches found...' -setopt nobeep # avoid "beep"ing -setopt pushd_ignore_dups # don't push the same dir twice. -setopt noglobdots # * shouldn't match dotfiles. ever. -setopt noshwordsplit # use zsh style word splitting -setopt unset # don't error out when unset parameters are used -# setting some default values +# append history list to the history file; this is the default but we make sure +# because it's required for share_history. +setopt append_history + +# import new commands from the history file also in other zsh-session +is4 && setopt share_history + +# save each command's beginning timestamp and the duration to the history file +setopt extended_history + +# If a new command line being added to the history list duplicates an older +# one, the older command is removed from the list +is4 && setopt histignorealldups + +# remove command lines from the history list when the first character on the +# line is a space +setopt histignorespace + +# if a command is issued that can't be executed as a normal command, and the +# command is the name of a directory, perform the cd command to that directory. +setopt auto_cd + +# in order to use #, ~ and ^ for filename generation grep word +# *~(*.gz|*.bz|*.bz2|*.zip|*.Z) -> searches for word not in compressed files +# don't forget to quote '^', '~' and '#'! +setopt extended_glob + +# display PID when suspending processes as well +setopt longlistjobs + +# try to avoid the 'zsh: no matches found...' +setopt nonomatch + +# report the status of backgrounds jobs immediately +setopt notify + +# whenever a command completion is attempted, make sure the entire command path +# is hashed first. +setopt hash_list_all + +# not just at the end +setopt completeinword + +# Don't send SIGHUP to background processes when the shell exits. +setopt nohup + +# make cd push the old directory onto the directory stack. +setopt auto_pushd +# avoid "beep"ing +setopt nobeep + +# don't push the same dir twice. +setopt pushd_ignore_dups + +# * shouldn't match dotfiles. ever. +setopt noglobdots + +# use zsh style word splitting +setopt noshwordsplit + +# don't error out when unset parameters are used +setopt unset + +# setting some default values NOCOR=${NOCOR:-0} NOMENU=${NOMENU:-0} NOPRECMD=${NOPRECMD:-0} @@ -288,7 +330,6 @@ COMMAND_NOT_FOUND=${COMMAND_NOT_FOUND:-0} GRML_ZSH_CNF_HANDLER=${GRML_ZSH_CNF_HANDLER:-/usr/share/command-not-found/command-not-found} BATTERY=${BATTERY:-0} GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1} -GRML_ALWAYS_LOAD_ALL=${GRML_ALWAYS_LOAD_ALL:-0} ZSH_NO_DEFAULT_LOCALE=${ZSH_NO_DEFAULT_LOCALE:-0} # utility functions @@ -513,9 +554,15 @@ export LESS_TERMCAP_so=$'\E[01;44;33m' export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_us=$'\E[01;32m' -MAILCHECK=30 # mailchecks -REPORTTIME=5 # report about cpu-/system-/user-time of command if running longer than 5 seconds -watch=(notme root) # watch for everyone but me and root +# mailchecks +MAILCHECK=30 + +# report about cpu-/system-/user-time of command if running longer than +# 5 seconds +REPORTTIME=5 + +# watch for everyone but me and root +watch=(notme root) # automatically remove duplicates from these arrays typeset -U path cdpath fpath manpath @@ -591,12 +638,6 @@ bindkey '\e[8~' end-of-somewhere # end bindkey '\e[A' up-line-or-search # cursor up bindkey '\e[B' down-line-or-search # - -## alt-backspace is already the default for backwards-delete-word -## let's also set alt-delete for deleting current word (right of cursor) -#k# Kill right-side word -bindkey '^[[3~' delete-word # Modeswitch -bindkey '^[[3;3~' delete-word # Alt_L - ## use Ctrl-left-arrow and Ctrl-right-arrow for jumping to word-beginnings on the CL bindkey "\e[5C" forward-word bindkey "\e[5D" backward-word @@ -1028,7 +1069,8 @@ if check_com -c screen || check_com -c tmux; then tmux -q capture-pane \; save-buffer -b 0 $TMPFILE \; delete-buffer -b 0 else screen -X hardcopy $TMPFILE - #screen sucks, it dumps in latin1, apparently always. so recode it to system charset + # screen sucks, it dumps in latin1, apparently always. so recode it + # to system charset check_com recode && recode latin1 $TMPFILE fi _screen_display_wordlist=( ${(QQ)$(<$TMPFILE)} ) @@ -1337,9 +1379,13 @@ preexec () { } EXITCODE="%(?..%?%1v )" -PS2='\`%_> ' # secondary prompt, printed when the shell needs more information to complete a command. -PS3='?# ' # selection prompt used within a select loop. -PS4='+%N:%i:%_> ' # the execution trace prompt (setopt xtrace). default: '+%N:%i>' +# secondary prompt, printed when the shell needs more information to complete a +# command. +PS2='\`%_> ' +# selection prompt used within a select loop. +PS3='?# ' +# the execution trace prompt (setopt xtrace). default: '+%N:%i>' +PS4='+%N:%i:%_> ' # set variable debian_chroot if running in a chroot with /etc/debian_chroot if [[ -z "$debian_chroot" ]] && [[ -r /etc/debian_chroot ]] ; then @@ -1350,8 +1396,9 @@ fi if [[ "$TERM" == dumb ]] ; then PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< " else - # only if $GRMLPROMPT is set (e.g. via 'GRMLPROMPT=1 zsh') use the extended prompt - # set variable identifying the chroot you work in (used in the prompt below) + # only if $GRMLPROMPT is set (e.g. via 'GRMLPROMPT=1 zsh') use the extended + # prompt set variable identifying the chroot you work in (used in the + # prompt below) if [[ $GRMLPROMPT -gt 0 ]] ; then PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< " @@ -1388,20 +1435,26 @@ hash -d www=/var/www # some aliases if check_com -c screen ; then if [[ $UID -eq 0 ]] ; then - [[ -r /etc/grml/screenrc ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc" + if [[ -r /etc/grml/screenrc ]]; then + alias screen="${commands[screen]} -c /etc/grml/screenrc" + fi elif [[ -r $HOME/.screenrc ]] ; then alias screen="${commands[screen]} -c $HOME/.screenrc" else if [[ -r /etc/grml/screenrc_grml ]]; then alias screen="${commands[screen]} -c /etc/grml/screenrc_grml" else - [[ -r /etc/grml/screenrc ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc" + if [[ -r /etc/grml/screenrc ]]; then + alias screen="${commands[screen]} -c /etc/grml/screenrc" + fi fi fi fi # do we have GNU ls with color-support? -if ls --help 2>/dev/null | grep -- --color= >/dev/null && [[ "$TERM" != dumb ]] ; then +if ls --help 2>/dev/null | grep -- --color= >/dev/null \ + && [[ "$TERM" != dumb ]] +then #a1# execute \kbd{@a@}:\quad ls with colors alias ls='ls -b -CF --color=auto' #a1# execute \kbd{@a@}:\quad list all files, with colors @@ -1428,11 +1481,6 @@ if [[ -x /sbin/kexec ]] && [[ -r /proc/cmdline ]] ; then alias "$(uname -r)-reboot"="kexec -l --initrd=/boot/initrd.img-"$(uname -r)" --command-line=\"$(cat /proc/cmdline)\" /boot/vmlinuz-"$(uname -r)"" fi -#a1# Execute \kbd{rmdir} -alias rd='rmdir' -#a1# Execute \kbd{mkdir} -alias md='mkdir' - # see http://www.cl.cam.ac.uk/~mgk25/unicode.html#term for details alias term2iso="echo 'Setting terminal to iso mode' ; print -n '\e%@'" alias term2utf="echo 'Setting terminal to utf-8 mode'; print -n '\e%G'" @@ -1457,28 +1505,12 @@ iso2utf() { fi } -# I like clean prompt, so provide simple way to get that -check_com 0 || alias 0='return 0' - -# for really lazy people like mika: -check_com S &>/dev/null || alias S='screen' -check_com s &>/dev/null || alias s='ssh' - # especially for roadwarriors using GNU screen and ssh: if ! check_com asc &>/dev/null ; then asc() { autossh -t "$@" 'screen -RdU' } compdef asc=ssh fi -# truecrypt; use e.g. via 'truec /dev/ice /mnt/ice' or 'truec -i' -if check_com -c truecrypt ; then - if isutfenv ; then - alias truec='truecrypt --mount-options "rw,sync,dirsync,users,uid=1000,gid=users,umask=077,utf8" ' - else - alias truec='truecrypt --mount-options "rw,sync,dirsync,users,uid=1000,gid=users,umask=077" ' - fi -fi - #f1# Hints for the use of zsh on grml zsh-help() { print "$bg[white]$fg[black] @@ -1506,10 +1538,6 @@ very lately. System wide configuration without touching configuration files of grml can take place in /etc/zsh/zshrc.local. -Normally, the root user (EUID == 0) does not get the whole grml setup. -If you want to force the whole setup for that user, too, set -GRML_ALWAYS_LOAD_ALL=1 in .zshrc.pre in root'\''s home directory. - For information regarding zsh start at http://grml.org/zsh/ Take a look at grml'\''s zsh refcard: @@ -1527,7 +1555,8 @@ Basically meant for bash users who are not used to the power of the zsh yet. :) "NOCOR=1 zsh" => deactivate automatic correction - "NOMENU=1 zsh" => do not use auto menu completion (note: use ctrl-d for completion instead!) + "NOMENU=1 zsh" => do not use auto menu completion + (note: use ctrl-d for completion instead!) "NOPRECMD=1 zsh" => disable the precmd + preexec commands (set GNU screen title) "NOTITLE=1 zsh" => disable setting the title of xterms without disabling preexec() and precmd() completely @@ -2013,7 +2042,7 @@ help_zle_parse_keybindings() if [[ -r $HELP_ZLE_CACHE_FILE ]]; then local load_cache=0 - for f ($KEYBINDING_FILES) [[ $f -nt $HELP_ZLE_CACHE_FILE ]] && load_cache=1 + for f ($HELPZLE_KEYBINDING_FILES) [[ $f -nt $HELP_ZLE_CACHE_FILE ]] && load_cache=1 [[ $load_cache -eq 0 ]] && . $HELP_ZLE_CACHE_FILE && return fi @@ -2204,27 +2233,11 @@ fi # load the lookup subsystem if it's available on the system zrcautoload lookupinit && lookupinit -### non-root (EUID != 0) code below -### - -if (( GRML_ALWAYS_LOAD_ALL == 0 )) && (( $EUID == 0 )) ; then - zrclocal - return 0 -fi - # variables # set terminal property (used e.g. by msgid-chooser) export COLORTERM="yes" -#m# v QTDIR \kbd{/usr/share/qt[34]}\quad [for non-root only] -[[ -d /usr/share/qt3 ]] && export QTDIR=/usr/share/qt3 -[[ -d /usr/share/qt4 ]] && export QTDIR=/usr/share/qt4 - -# support running 'jikes *.java && jamvm HelloWorld' OOTB: -#v# [for non-root only] -[[ -f /usr/share/classpath/glibj.zip ]] && export JIKESPATH=/usr/share/classpath/glibj.zip - # aliases # general @@ -2233,12 +2246,6 @@ alias da='du -sch' #a2# Execute \kbd{jobs -l} alias j='jobs -l' -# compile stuff -#a2# Execute \kbd{./configure} -alias CO="./configure" -#a2# Execute \kbd{./configure --help} -alias CH="./configure --help" - # listing stuff #a2# Execute \kbd{ls -lSrah} alias dir="ls -lSrah" @@ -2266,6 +2273,10 @@ alias lsnew="ls -rtlh *(D.om[1,10])" # display the newest files alias lsold="ls -rtlh *(D.Om[1,10])" # display the oldest files #a2# Display the ten smallest files alias lssmall="ls -Srl *(.oL[1,10])" # display the smallest files +#a2# Display the ten newest directories and ten newest .directories +alias lsnewdir="ls -rthdl *(/om[1,10]) .*(D/om[1,10])" +#a2# Display the ten oldest directories and ten oldest .directories +alias lsolddir="ls -rthdl *(/Om[1,10]) .*(D/Om[1,10])" # some useful aliases #a2# Remove current empty directory. Execute \kbd{cd ..; rmdir $OLDCWD} @@ -2278,9 +2289,6 @@ alias insecscp='scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/nu # simple webserver check_com -c python && alias http="python -m SimpleHTTPServer" -# Use 'g' instead of 'git': -check_com g || alias g='git' - # work around non utf8 capable software in utf environment via $LANG and luit if check_com isutfenv && check_com luit ; then if check_com -c mrxvt ; then @@ -2575,56 +2583,6 @@ _simple_extract() compdef _simple_extract simple-extract alias se=simple-extract -# Usage: smartcompress () -#f5# Smart archive creator -smartcompress() { - emulate -L zsh - if [[ -n $2 ]] ; then - case $2 in - tgz | tar.gz) tar -zcvf$1.$2 $1 ;; - tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;; - tar.Z) tar -Zcvf$1.$2 $1 ;; - tar) tar -cvf$1.$2 $1 ;; - gz | gzip) gzip $1 ;; - bz2 | bzip2) bzip2 $1 ;; - *) - echo "Error: $2 is not a valid compression type" - ;; - esac - else - smartcompress $1 tar.gz - fi -} - -# Usage: show-archive -#f5# List an archive's content -show-archive() { - emulate -L zsh - if [[ -f $1 ]] ; then - case $1 in - *.tar.gz) gunzip -c $1 | tar -tf - -- ;; - *.tar) tar -tf $1 ;; - *.tgz) tar -ztf $1 ;; - *.zip) unzip -l $1 ;; - *.bz2) bzless $1 ;; - *.deb) dpkg-deb --fsys-tarfile $1 | tar -tf - -- ;; - *) echo "'$1' Error. Please go away" ;; - esac - else - echo "'$1' is not a valid archive" - fi -} - -# TODO: So, this is the third incarnation of this function!? -#f5# Reload given functions -refunc() { - for func in $argv ; do - unfunction $func - autoload $func - done -} -compdef _functions refunc - #f5# Set all ulimit parameters to \kbd{unlimited} allulimit() { ulimit -c unlimited