X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fskel%2F.zshrc;h=37642a3687832527a497056415797a301d75bb12;hb=71bdc48d190a5369fff28a97c828db7b1edf10a9;hp=667bc3f96a9bfe33fd6eedc0edb4bff249cadf14;hpb=b064d2e832046f078549a9625f75025c5638ab79;p=grml-etc-core.git diff --git a/etc/skel/.zshrc b/etc/skel/.zshrc index 667bc3f..37642a3 100644 --- a/etc/skel/.zshrc +++ b/etc/skel/.zshrc @@ -1,12 +1,339 @@ -## skel/.zshrc on grml systems -# -# Nowadays, grml's zsh setup lives in only in *one* zshrc file. +# Filename: /etc/skel/.zshrc +# Purpose: config file for zsh (z shell) +# Authors: (c) grml-team (grml.org) +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2 or any later version. +################################################################################ +# Nowadays, grml's zsh setup lives in only *one* zshrc file. # That is the global one: /etc/zsh/zshrc (from grml-etc-core). -# It is best to leave this file untouched and do personal changes to -# the setup via ${HOME}/.zshrc.local which is loaded at the end of the -# global zshrc. +# It is best to leave *this* file untouched and do personal changes to +# your zsh setup via ${HOME}/.zshrc.local which is loaded at the end of +# the global zshrc. # # That way, we enable people on other operating systems to use our # setup, too, just by copying our global zshrc to their ${HOME}/.zshrc. # Adjustments would still go to the .zshrc.local file. -# +################################################################################ + +## Inform users about upgrade path for grml's old zshrc layout, assuming that: +## /etc/skel/.zshrc was installed as ~/.zshrc, +## /etc/zsh/zshrc was installed as ~/.zshrc.global and +## ~/.zshrc.local does not exist yet. +if [ -r ~/.zshrc -a -r ~/.zshrc.global -a ! -r ~/.zshrc.local ] ; then + printf '-!-\n' + printf '-!- Looks like you are using the old zshrc layout of grml.\n' + printf '-!- Please read the notes in the grml-zsh-refcard, being' + printf '-!- available at: http://grml.org/zsh/\n' + printf '-!-\n' + printf '-!- If you just want to get rid of this warning message execute:\n' + printf '-!- touch ~/.zshrc.local\n' + printf '-!-\n' +fi + +## Settings for umask +#if (( EUID == 0 )); then +# umask 002 +#else +# umask 022 +#fi + +## Now, we'll give a few examples of what you might want to use in your +## .zshrc.local file (just copy'n'paste and uncomment it there): + +## Prompt theme extension ## + +# Virtualenv support + +#function virtual_env_prompt () { +# REPLY=${VIRTUAL_ENV+(${VIRTUAL_ENV:t}) } +#} +#grml_theme_add_token virtual-env -f virtual_env_prompt '%F{magenta}' '%f' +#zstyle ':prompt:grml:left:setup' items rc virtual-env change-root user at host path vcs percent + +## ZLE tweaks ## + +## use the vi navigation keys (hjkl) besides cursor keys in menu completion +#bindkey -M menuselect 'h' vi-backward-char # left +#bindkey -M menuselect 'k' vi-up-line-or-history # up +#bindkey -M menuselect 'l' vi-forward-char # right +#bindkey -M menuselect 'j' vi-down-line-or-history # bottom + +## set command prediction from history, see 'man 1 zshcontrib' +#is4 && zrcautoload predict-on && \ +#zle -N predict-on && \ +#zle -N predict-off && \ +#bindkey "^X^Z" predict-on && \ +#bindkey "^Z" predict-off + +## press ctrl-q to quote line: +#mquote () { +# zle beginning-of-line +# zle forward-word +# # RBUFFER="'$RBUFFER'" +# RBUFFER=${(q)RBUFFER} +# zle end-of-line +#} +#zle -N mquote && bindkey '^q' mquote + +## define word separators (for stuff like backward-word, forward-word, backward-kill-word,..) +#WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default +#WORDCHARS=. +#WORDCHARS='*?_[]~=&;!#$%^(){}' +#WORDCHARS='${WORDCHARS:s@/@}' + +# just type '...' to get '../..' +#rationalise-dot() { +#local MATCH +#if [[ $LBUFFER =~ '(^|/| | |'$'\n''|\||;|&)\.\.$' ]]; then +# LBUFFER+=/ +# zle self-insert +# zle self-insert +#else +# zle self-insert +#fi +#} +#zle -N rationalise-dot +#bindkey . rationalise-dot +## without this, typing a . aborts incremental history search +#bindkey -M isearch . self-insert + +#bindkey '\eq' push-line-or-edit + +## some popular options ## + +## add `|' to output redirections in the history +#setopt histallowclobber + +## try to avoid the 'zsh: no matches found...' +#setopt nonomatch + +## warning if file exists ('cat /dev/null > ~/.zshrc') +#setopt NO_clobber + +## don't warn me about bg processes when exiting +#setopt nocheckjobs + +## alert me if something failed +#setopt printexitvalue + +## with spelling correction, assume dvorak kb +#setopt dvorak + +## Allow comments even in interactive shells +#setopt interactivecomments + +## 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 + +## compsys related snippets ## + +## changed completer settings +#zstyle ':completion:*' completer _complete _correct _approximate +#zstyle ':completion:*' expand prefix suffix + +## another different completer setting: expand shell aliases +#zstyle ':completion:*' completer _expand_alias _complete _approximate + +## to have more convenient account completion, specify your logins: +#my_accounts=( +# {grml,grml1}@foo.invalid +# grml-devel@bar.invalid +#) +#other_accounts=( +# {fred,root}@foo.invalid +# vera@bar.invalid +#) +#zstyle ':completion:*:my-accounts' users-hosts $my_accounts +#zstyle ':completion:*:other-accounts' users-hosts $other_accounts + +## add grml.org to your list of hosts +#hosts+=(grml.org) +#zstyle ':completion:*:hosts' hosts $hosts + +## telnet on non-default ports? ...well: +## specify specific port/service settings: +#telnet_users_hosts_ports=( +# user1@host1: +# user2@host2: +# @mail-server:{smtp,pop3} +# @news-server:nntp +# @proxy-server:8000 +#) +#zstyle ':completion:*:*:telnet:*' users-hosts-ports $telnet_users_hosts_ports + +## the default grml setup provides '..' as a completion. it does not provide +## '.' though. If you want that too, use the following line: +#zstyle ':completion:*' special-dirs true + +## aliases ## + +## translate +#alias u='translate -i' + +## ignore ~/.ssh/known_hosts entries +#alias insecssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "PreferredAuthentications=keyboard-interactive"' + + +## global aliases (for those who like them) ## + +#alias -g '...'='../..' +#alias -g '....'='../../..' +#alias -g BG='& exit' +#alias -g C='|wc -l' +#alias -g G='|grep' +#alias -g H='|head' +#alias -g Hl=' --help |& less -r' +#alias -g K='|keep' +#alias -g L='|less' +#alias -g LL='|& less -r' +#alias -g M='|most' +#alias -g N='&>/dev/null' +#alias -g R='| tr A-z N-za-m' +#alias -g SL='| sort | less' +#alias -g S='| sort' +#alias -g T='|tail' +#alias -g V='| vim -' + +## instead of global aliase it might be better to use grmls $abk assoc array, whose contents are expanded after pressing ,. +#$abk[SnL]="| sort -n | less" + +## get top 10 shell commands: +#alias top10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10' + +## Execute \kbd{./configure} +#alias CO="./configure" + +## Execute \kbd{./configure --help} +#alias CH="./configure --help" + +## miscellaneous code ## + +## Use a default width of 80 for manpages for more convenient reading +#export MANWIDTH=${MANWIDTH:-80} + +## Set a search path for the cd builtin +#cdpath=(.. ~) + +## variation of our manzsh() function; pick you poison: +#manzsh() { /usr/bin/man zshall | most +/"$1" ; } + +## Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html +#bash() { +# NO_SWITCH="yes" command bash "$@" +#} +#restart () { +# exec $SHELL $SHELL_ARGS "$@" +#} + +## Handy functions for use with the (e::) globbing qualifier (like nt) +#contains() { grep -q "$*" $REPLY } +#sameas() { diff -q "$*" $REPLY &>/dev/null } +#ot () { [[ $REPLY -ot ${~1} ]] } + +## get_ic() - queries imap servers for capabilities; real simple. no imaps +#ic_get() { +# emulate -L zsh +# local port +# if [[ ! -z $1 ]] ; then +# port=${2:-143} +# print "querying imap server on $1:${port}...\n"; +# print "a1 capability\na2 logout\n" | nc $1 ${port} +# else +# print "usage:\n $0 [port]" +# fi +#} + +## List all occurrences of programm in current PATH +#plap() { +# emulate -L zsh +# if [[ $# = 0 ]] ; then +# echo "Usage: $0 program" +# echo "Example: $0 zsh" +# echo "Lists all occurrences of program in the current PATH." +# else +# ls -l ${^path}/*$1*(*N) +# fi +#} + +## Find out which libs define a symbol +#lcheck() { +# if [[ -n "$1" ]] ; then +# nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1" +# else +# echo "Usage: lcheck " >&2 +# fi +#} + +## Download a file and display it locally +#uopen() { +# emulate -L zsh +# if ! [[ -n "$1" ]] ; then +# print "Usage: uopen \$URL/\$file">&2 +# return 1 +# else +# FILE=$1 +# MIME=$(curl --head $FILE | \ +# grep Content-Type | \ +# cut -d ' ' -f 2 | \ +# cut -d\; -f 1) +# MIME=${MIME%$'\r'} +# curl $FILE | see ${MIME}:- +# fi +#} + +## Memory overview +#memusage() { +# ps aux | awk '{if (NR > 1) print $5; +# if (NR > 2) print "+"} +# END { print "p" }' | dc +#} + +## print hex value of a number +#hex() { +# emulate -L zsh +# if [[ -n "$1" ]]; then +# printf "%x\n" $1 +# else +# print 'Usage: hex ' +# return 1 +# fi +#} + +## log out? set timeout in seconds... +## ...and do not log out in some specific terminals: +#if [[ "${TERM}" == ([Exa]term*|rxvt|dtterm|screen*) ]] ; then +# unset TMOUT +#else +# TMOUT=1800 +#fi + +## associate types and extensions (be aware with perl scripts and anwanted behaviour!) +#check_com zsh-mime-setup || { autoload zsh-mime-setup && zsh-mime-setup } +#alias -s pl='perl -S' + +## ctrl-s will no longer freeze the terminal. +#stty erase "^?" + +## you want to automatically use a bigger font on big terminals? +#if [[ "$TERM" == "xterm" ]] && [[ "$LINES" -ge 50 ]] && [[ "$COLUMNS" -ge 100 ]] && [[ -z "$SSH_CONNECTION" ]] ; then +# large +#fi + +## Some quick Perl-hacks aka /useful/ oneliner +#bew() { perl -le 'print unpack "B*","'$1'"' } +#web() { perl -le 'print pack "B*","'$1'"' } +#hew() { perl -le 'print unpack "H*","'$1'"' } +#weh() { perl -le 'print pack "H*","'$1'"' } +#pversion() { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79" +#getlinks () { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* } +#gethrefs () { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* } +#getanames () { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* } +#getforms () { perl -ne 'while ( m:(\):gic ) { print $1, "\n"; }' $* } +#getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*} +#getanchors () { perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }' $* } +#showINC () { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' } +#vimpm () { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` } +#vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" } + +## END OF FILE #################################################################