X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=64503c2d857666b3e51a205b605ebbd5cfea204d;hb=d0d83ab;hp=c6e0ecad9bc558d4cee215e9eb2d5f9da761b2de;hpb=0d6dd0966c7a3e4f77220c13bad13d925ee7d7b5;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index c6e0eca..64503c2 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -134,7 +134,12 @@ is43(){ } is433(){ - [[ $ZSH_VERSION == 4.3.<3->* || $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 return 1 } @@ -276,6 +281,7 @@ 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 # }}} @@ -291,79 +297,6 @@ GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1} GRML_ALWAYS_LOAD_ALL=${GRML_ALWAYS_LOAD_ALL:-0} ZSH_NO_DEFAULT_LOCALE=${ZSH_NO_DEFAULT_LOCALE:-0} -if isgrmlcd ; then - GRML_WARN_SKEL=${GRML_WARN_SKEL:-0} -else - GRML_WARN_SKEL=${GRML_WARN_SKEL:-1} -fi - -if (( GRML_WARN_SKEL != 0 )) ; then - -function grml_warn_skel_main() { - printf ' -Dear user, - -You updated grml'\''s zshrc which brings a major change. -The configuration is kept only in one file, being the global zshrc. -In the past, the configuration was split in two files, with the -second file being the .zshrc file from /etc/skel. - -If you have a .zshrc file in your home directory that originally -came from the skel directory, please remove it. This is also the case -if you followed earlier instructions from the grml-zsh-refcard or -from on non-grml systems. - -Please see the current grml-zsh-refcard (available at -) for updated installation information. In short, -you don'\''t want a .zshrc.global file. Install the global zshrc to -~/.zshrc and be done. - -If you need changes to the configuration, use ~/.zshrc.pre and -~/.zshrc.local. - -' -} - -function grml_warn_skel_remove() { - printf 'To remove this warning execute '\''grml_do_not_warn_skel'\''.\n\n' -} - -function grml_do_not_warn_skel() { - printf '# Do not warn about old skel dot-files anymore\n' >>! ~/.zshrc.pre - printf 'GRML_WARN_SKEL=0\n' >>! ~/.zshrc.pre -} - -# let's try to guess how the user uses us. -if is-at-least 4.3.7 ; then - # funcsourcetrace requires at least version 4.3.7 of zsh. - GRML_SRC_FILE="${${funcsourcetrace[1]}%:*}" - - grml_warn_skel_main - case ${GRML_SRC_FILE} in - (${HOME}/.zshrc.global) - grml_warn_skel_remove - printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc.global'\''.\n' - printf 'Nowadays you just copy the global zshrc to '\''~/.zshrc'\'' to use\n' - printf 'it on a non-grml-system.\n' - ;; - (${HOME}/.zshrc) - printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc'\''.\n' - printf 'We'\''ll disable this warning automatically for later sessions.\n' - grml_do_not_warn_skel - ;; - (*) - grml_do_not_warn_skel - ;; - esac -else - grml_warn_skel_main - grml_warn_skel_remove -fi - -unfunction grml_warn_skel_remove grml_warn_skel_main - -fi # GRML_WARN_SKEL - # }}} # utility functions {{{ @@ -540,32 +473,6 @@ xsource "/etc/sysconfig/keyboard" TZ=$(xcat /etc/timezone) # }}} -# check for potentially old files in 'completion.d' {{{ -setopt extendedglob -xof=(/etc/zsh/completion.d/*~/etc/zsh/completion.d/_*(N)) -if (( ${#xof} > 0 )) ; then - printf '\n -!- INFORMATION\n\n' - printf ' -!- %s file(s) not starting with an underscore (_) found in\n' ${#xof} - printf ' -!- /etc/zsh/completion.d/.\n\n' - printf ' -!- While this has been the case in old versions of grml-etc-core,\n' - printf ' -!- recent versions of the grml-zsh-setup have all these files rewritten\n' - printf ' -!- and renamed. Furthermore, the grml-zsh-setup will *only* add files\n' - printf ' -!- named _* to that directory.\n\n' - printf ' -!- If you added functions to completion.d yourself, please consider\n' - printf ' -!- moving them to /etc/zsh/functions.d/. Files in that directory, not\n' - printf ' -!- starting with an underscore are marked for automatic loading\n' - printf ' -!- by default (so that is quite convenient).\n\n' - printf ' -!- If there are files *not* starting with an underscore from an older\n' - printf ' -!- grml-etc-core in completion.d, you may safely remove them.\n\n' - printf ' -!- Delete the files for example via running:\n\n' - 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 -# }}} - # {{{ set some variables if check_com -c vim ; then #v# @@ -680,19 +587,6 @@ zle -N insert-unicode-char #k# Insert Unicode character bindkey '^Xi' insert-unicode-char -# just type 'cd ...' to get 'cd ../..' -# rationalise-dot() { -# if [[ $LBUFFER == *.. ]] ; then -# LBUFFER+=/.. -# else -# LBUFFER+=. -# fi -# } -# zle -N rationalise-dot -# bindkey . rationalise-dot - -# bindkey '\eq' push-line-or-edit - ## toggle the ,. abbreviation feature on/off # NOABBREVIATION: default abbreviation-state # 0 - enabled (default) @@ -729,6 +623,11 @@ zle -N slash-backward-kill-word #k# Kill everything in a word up to its last \kbd{/} bindkey '\ev' slash-backward-kill-word +# use the new *-pattern-* widgets for incremental history search +if is439 ; then + bindkey '^r' history-incremental-pattern-search-backward + bindkey '^s' history-incremental-pattern-search-forward +fi # }}} # a generic accept-line wrapper {{{ @@ -751,7 +650,7 @@ bindkey '\ev' slash-backward-kill-word zstyle ':acceptline:*' rehash true function Accept-Line() { - setopt localoptions noksharrays + emulate -L zsh local -a subs local -xi aldone local sub @@ -770,6 +669,7 @@ function Accept-Line() { } function Accept-Line-getdefault() { + emulate -L zsh local default_action zstyle -s ":acceptline:${alcontext}" default_action default_action @@ -784,7 +684,7 @@ function Accept-Line-getdefault() { } function accept-line() { - setopt localoptions noksharrays + emulate -L zsh local -a cmdline local -x alcontext local buf com fname format msg default_action @@ -938,7 +838,9 @@ alias url-quote='autoload -U url-quote-magic ; zle -N self-insert url-quote-magi #m# k ESC-h Call \kbd{run-help} for the 1st word on the command line alias run-help >&/dev/null && unalias run-help -zrcautoload run-help # use via 'esc-h' +for rh in run-help{,-git,-svk,-svn}; do + zrcautoload $rh +done; unset rh # completion system if zrcautoload compinit ; then @@ -1950,6 +1852,7 @@ vcs_info_printsys () { # {{{ } # }}} vcs_info_lastmsg () { # {{{ + emulate -L zsh local -i i VCS_INFO_maxexports @@ -1965,6 +1868,8 @@ vcs_info_lastmsg () { # {{{ } # }}} vcs_info () { # {{{ + emulate -L zsh + setopt extendedglob local pat local -i found local -a VCSs disabled dps @@ -2233,7 +2138,7 @@ alias rm='nocorrect rm' # no spelling correction on rm #a1# Execute \kbd{rmdir} alias rd='rmdir' -#a1# Execute \kbd{rmdir} +#a1# Execute \kbd{mkdir} alias md='mkdir' # see http://www.cl.cam.ac.uk/~mgk25/unicode.html#term for details @@ -2268,7 +2173,6 @@ swspeak() { export PS1="%m%# " /usr/sbin/swspeak-setup $@ else # old version: - aumix -w 90 -v 90 -p 90 -m 90 if ! [[ -r /dev/softsynth ]] ; then flite -o play -t "Sorry, software synthesizer not available. Did you boot with swspeak bootoption?" return 1 @@ -2435,12 +2339,17 @@ if check_com -c grep-status ; then fi # if cdrecord is a symlink (to wodim) or isn't present at all warn: -if [[ -L /usr/bin/cdrecord ]] || ! check_com -c cdrecord ; then - if check_com -c wodim ; then - alias cdrecord="echo 'cdrecord is not provided under its original name by Debian anymore. +if [[ -L /usr/bin/cdrecord ]] || ! check_com -c cdrecord; then + if check_com -c wodim; then + cdrecord() { + cat <\n' "ssh-cert-${sh}" + return 1 + fi + openssl x509 -noout -fingerprint -${sh} -in $1 + } +done; unset sh + +ssl-cert-fingerprints() { + emulate -L zsh + local i + if [[ -z $1 ]] ; then + printf 'usage: ssl-cert-fingerprints \n' + return 1 + fi + for i in ${ssl_hashes} + do ssl-cert-$i $1; + done +} + +ssl-cert-info() { + emulate -L zsh + if [[ -z $1 ]] ; then + printf 'usage: ssl-cert-info \n' + return 1 + fi + openssl x509 -noout -text -in $1 + ssl-cert-fingerprints $1 +} + # }}} # {{{ make sure our environment is clean regarding colors @@ -3173,20 +3108,6 @@ alias CO="./configure" #a2# Execute \kbd{./configure --help} alias CH="./configure --help" -# arch/tla stuff -if check_com -c tla ; then - #a2# Execute \kbd{tla what-changed --diffs | less} - alias tdi='tla what-changed --diffs | less' - #a2# Execute \kbd{tla-buildpackage} - alias tbp='tla-buildpackage' - #a2# Execute \kbd{tla archive-mirror} - alias tmi='tla archive-mirror' - #a2# Execute \kbd{tla commit} - alias tco='tla commit' - #a2# Execute \kbd{tla star-merge} - alias tme='tla star-merge' -fi - # listing stuff #a2# Execute \kbd{ls -lSrah} alias dir="ls -lSrah" @@ -3197,9 +3118,9 @@ alias lsa='ls -a .*(.)' # only show dot-files #a2# Only files with setgid/setuid/sticky flag alias lss='ls -l *(s,S,t)' # only files with setgid/setuid/sticky flag #a2# Only show 1st ten symlinks -alias lsl='ls -l *(@[1,10])' # only symlinks +alias lsl='ls -l *(@)' # only symlinks #a2# Display only executables -alias lsx='ls -l *(*[1,10])' # only executables +alias lsx='ls -l *(*)' # only executables #a2# Display world-{readable,writable,executable} files alias lsw='ls -ld *(R,W,X.^ND/)' # world-{readable,writable,executable} files #a2# Display the ten biggest files @@ -3229,8 +3150,6 @@ alias r-x='chmod 755' #a2# Execute \kbd{mkdir -o} alias md='mkdir -p' -check_com -c ipython && alias ips='ipython -p sh' - # console stuff #a2# Execute \kbd{mplayer -vo fbdev} alias cmplayer='mplayer -vo fbdev' @@ -3249,12 +3168,6 @@ check_com -c python && alias http="python -m SimpleHTTPServer" # Use 'g' instead of 'git': check_com g || alias g='git' -# check whether Debian's package management (dpkg) is running -if check_com salias ; then - #a2# Check whether a dpkg instance is currently running - salias check_dpkg_running="dpkg_running" -fi - # 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 @@ -3424,7 +3337,11 @@ disassemble(){ } #f5# Firefox remote control - open given URL fir() { - firefox -a firefox -remote "openURL($1)" + if [ -e /etc/debian_version ]; then + firefox -a iceweasel -remote "openURL($1)" || firefox ${1}& + else + firefox -a firefox -remote "openURL($1)" || firefox ${1}& + fi } #f5# Create Directoy and \kbd{cd} to it mcd() { @@ -3438,26 +3355,16 @@ mdiff() { memusage() { ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc } -#f5# Show contents of tar file +#f5# Show contents of gzipped tar file shtar() { emulate -L zsh gunzip -c $1 | tar -tf - -- | $PAGER } -#f5# Show contents of tgz file -shtgz() { - emulate -L zsh - tar -ztf $1 | $PAGER -} #f5# Show contents of zip file shzip() { emulate -L zsh unzip -l $1 | $PAGER } -#f5# Greps signature from file -sig() { - emulate -L zsh - agrep -d '^-- $' "$*" ~/.Signature -} #f5# Unified diff udiff() { emulate -L zsh @@ -3469,17 +3376,6 @@ viless() { vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}" } -# download video from youtube -ytdl() { - emulate -L zsh - 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 -} - # Function Usage: uopen $URL/$file #f5# Download a file and display it locally uopen() { @@ -3519,7 +3415,7 @@ limg() { if [[ $#images -eq 0 ]] ; then print "No image files found" else - ls "$@" "$images[@]" + ls "$images[@]" fi } @@ -3608,7 +3504,7 @@ purge() { rm ${FILES} echo ">> $PWD purged, $NBFILES files removed" else - echo "Ok. .. than not.." + echo "Ok. .. then not.." fi fi } @@ -3776,19 +3672,8 @@ ansi-colors() { done } -# suidfind() { ls -latg $path | grep '^...s' } #f5# Find all files in \$PATH with setuid bit set -suidfind() { ls -latg $path/*(sN) } - -# See above but this is /better/ ... anywise .. -findsuid() { - print 'Output will be written to ~/suid_* ...' - $SUDO find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suidfiles.`date "+%Y-%m-%d"`.out 2>&1 - $SUDO find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suiddirs.`date "+%Y-%m-%d"`.out 2>&1 - $SUDO find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/suid_writefiles.`date "+%Y-%m-%d"`.out 2>&1 - $SUDO find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/suid_writedirs.`date "+%Y-%m-%d"`.out 2>&1 - print 'Finished' -} +suidfind() { ls -latg $path | grep '^...s' } # TODO: So, this is the third incarnation of this function!? #f5# Reload given functions @@ -4518,15 +4403,11 @@ if (( GRMLSMALL_SPECIFIC > 0 )) && isgrmlsmall ; then unset abk[V] unalias 'V' &> /dev/null unfunction vman &> /dev/null - unfunction vimpm &> /dev/null - unfunction vimhelp &> /dev/null unfunction viless &> /dev/null unfunction 2html &> /dev/null # manpages are not in grmlsmall unfunction manzsh &> /dev/null - unalias man2 &> /dev/null - unalias man &> /dev/null unfunction man2 &> /dev/null fi @@ -4547,3 +4428,6 @@ zrclocal ## END OF FILE ################################################################# # vim:filetype=zsh foldmethod=marker autoindent expandtab shiftwidth=4 +# Local variables: +# mode: sh +# End: