# }}}
# {{{ set some important options (as early as possible)
-# Please update these tags, if you change the umask settings below.
-#o# r_umask 002
-#o# r_umaskstr rwxrwxr-x
-#o# umask 022
-#o# umaskstr rwxr-xr-x
-(( EUID != 0 )) && umask 002 || umask 022
-
setopt append_history # append history list to the history file (important for multiple parallel zsh sessions!)
is4 && setopt SHARE_HISTORY # import new commands from the history file also in other zsh-session
setopt extended_history # save each command's beginning timestamp and the duration to the history file
#k# Kill everything in a word up to its last \kbd{/}
bindkey '\ev' slash-backward-kill-word
+#k# Kill everything in a word up to its last \kbd{/}
+bindkey '\e^h' slash-backward-kill-word
+#k# Kill everything in a word up to its last \kbd{/}
+bindkey '\e^?' slash-backward-kill-word
# use the new *-pattern-* widgets for incremental history search
if is439 ; then
# run command line as user root via sudo:
sudo-command-line() {
[[ -z $BUFFER ]] && zle up-history
- [[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
+ if [[ $BUFFER != sudo\ * ]]; then
+ BUFFER="sudo $BUFFER"
+ CURSOR=$(( CURSOR+5 ))
+ fi
}
zle -N sudo-command-line
if zrcautoload vcs_info; then
GRML_VCS_INFO=0
+ # `vcs_info' in zsh versions 4.3.10 and below have a broken `_realpath'
+ # function, which can cause a lot of trouble with our directory-based
+ # profiles. So:
+ if [[ ${ZSH_VERSION} == 4.3.<-10> ]] ; then
+ function VCS_INFO_realpath () {
+ setopt localoptions NO_shwordsplit chaselinks
+ ( builtin cd -q $1 2> /dev/null && pwd; )
+ }
+ fi
else
# I'm not reindenting the whole code below.
GRML_VCS_INFO=1
esc_end="$2"
shift 2
printf '%s' ${esc_begin}
- for item in "$@" ; do
- printf '%s ' "$item"
- done
+ printf '%s' "$*"
printf '%s' "${esc_end}"
}
fi
# get top 10 shell commands:
-alias top10='print -l ? ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
+alias top10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
# truecrypt; use e.g. via 'truec /dev/ice /mnt/ice' or 'truec -i'
if check_com -c truecrypt ; then
ssl_hashes=( sha512 sha256 sha1 md5 )
for sh in ${ssl_hashes}; do
- ssl-cert-${sh}() {
+ eval 'ssl-cert-'${sh}'() {
emulate -L zsh
if [[ -z $1 ]] ; then
- printf 'usage: %s <file>\n' "ssh-cert-${sh}"
+ printf '\''usage: %s <file>\n'\'' "ssh-cert-'${sh}'"
return 1
fi
- openssl x509 -noout -fingerprint -${sh} -in $1
- }
+ openssl x509 -noout -fingerprint -'${sh}' -in $1
+ }'
done; unset sh
ssl-cert-fingerprints() {
fi
# }}}
+# load the lookup subsystem if it's available on the system
+zrcautoload lookupinit && lookupinit
+
#:grep:marker:for:mika: :-)
### non-root (EUID != 0) code below
###
return 0
fi
-zrcautoload lookupinit && lookupinit
-
# variables {{{
# set terminal property (used e.g. by msgid-chooser)
#a2# Only show empty directories
alias lse='ls -d *(/^F)' # only show empty directories
#a2# Display the ten newest files
-alias lsnew="ls -rl *(D.om[1,10])" # display the newest files
+alias lsnew="ls -rtlh *(D.om[1,10])" # display the newest files
#a2# Display the ten oldest files
-alias lsold="ls -rtlh *(D.om[1,10])" # display the oldest 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
#f5# Watch manpages in a stretched style
man2() { PAGER='dash -c "sed G | /usr/bin/less"' command man "$@" ; }
-# d():Copyright 2005 Nikolai Weibull <nikolai@bitwi.se>
-# note: option AUTO_PUSHD has to be set
-#f5# Jump between directories
-d() {
- emulate -L zsh
- autoload -U colors
- local color=$fg_bold[blue]
- integer i=0
- dirs -p | while read dir; do
- local num="${$(printf "%-4d " $i)/ /.}"
- printf " %s $color%s$reset_color\n" $num $dir
- (( i++ ))
- done
- integer dir=-1
- read -r 'dir?Jump to directory: ' || return
- (( dir == -1 )) && return
- if (( dir < 0 || dir >= i )); then
- echo d: no such directory stack entry: $dir
- return 1
- fi
- cd ~$dir
-}
-
# usage example: 'lcheck strcpy'
#f5# Find out which libs define a symbol
lcheck() {
fi
}
+#f5# show labels and uuids of disk devices
+if is439 && [[ -d /dev/disk/by-id/ ]]; then
+ lsdisk() {
+ emulate -L zsh
+ setopt extendedglob
+ local -a -U disks
+ disks=( /dev/disk/by-id/*(@:A) )
+ for dev in "$disks[@]"; do
+ print ${fg_bold[red]}${dev}${reset_color} /dev/disk/by-label/*(@e/'[[ ${REPLY:A} == $dev ]] && REPLY=${fg[blue]}LABEL=${REPLY:t}${reset_color}'/N) /dev/disk/by-uuid/*(@e/'[[ ${REPLY:A} == $dev ]] && REPLY=${fg[green]}UUID=${REPLY:t}${reset_color}'/N)
+ print -f " %s\n" /dev/disk/by-id/*(@e/'[[ ${REPLY:A} == $dev ]]'/N:t)
+ done
+ }
+fi
+
# Translate DE<=>EN
# 'translate' looks up fot a word in a file with language-to-language
# translations (field separator should be " : "). A typical wordlist looks
#f5# Use \kbd{vim} as your manpage reader
vman() {
emulate -L zsh
- man $* | col -b | view -c 'set ft=man nomod nolist' -
+ if (( ${#argv} == 0 )); then
+ printf 'usage: vman <topic>\n'
+ return 1
+ fi
+ man "$@" | col -b | view -c 'set ft=man nomod nolist' -
}
# function readme() { $PAGER -- (#ia3)readme* }