All pastes #1568411 Raw Edit

zshrc

public text v1 · immutable
#1568411 ·published 2009-09-16 15:15 UTC
rendered paste body
#___________________________________________________________________________
# zsh options

HISTFILE=~/.histfile
HISTSIZE=2000
SAVEHIST=2000

setopt correct
setopt extendedglob
setopt autopushd pushdminus pushdsilent pushdtohome
setopt no_clobber           # don't overwrite files when redirect
setopt share_history
setopt hist_verify          # verify when using !
setopt hist_ignore_space    # prepend ' ' to not be saved
setopt nohup               # don't kill bg jobs when tty quits
setopt nocheckjobs          # don't complain about background jobs on exit
setopt printexitvalue       # print exit value from jobs

unsetopt bgnice            # don't nice bg command

autoload -U compinit
compinit

#___________________________________________________________________________
# zsh zle key bindings

bindkey -e                      # emacs since vi just doesn't fit here :(

bindkey ' ' magic-space         # also do history expansion on space

bindkey '^z' undo               # C-x-u is overkill

bindkey ';5D' backward-word     # C-left
bindkey ';5C' forward-word      # C-right

# vi-ish bindings
bindkey '^w' kill-word
bindkey '^b' backward-kill-word

# fish/ipython-ish bindings
bindkey '\e[A' history-beginning-search-backward    # up arrow
bindkey '\e[B' history-beginning-search-forward     # down arrow

#___________________________________________________________________________
# alias

# zsh global aliases
alias -g H='--help'
alias -g L='| less'
alias -g M='| most'
alias -g G='| grep'
alias -g GC='| grep -C 2'

alias ..='cd ..'

alias ls='ls -G'
alias ll='ls -lh'
alias la='ls -A'
alias lal='ls -Alh'

alias dirs='dirs -v'                    # zsh dir stack

alias hist='history | grep'             # take an argument

alias cp='cp -iv'
alias mv='mv -iv'

alias du='du -h'
alias df='df -h'

alias pscpu='ps -eo pcpu,nice,stat,time,pid,cmd --sort=-pcpu,-time \
             | sed "/^ 0.0 /d"'
alias psmem='ps -eo rss,vsz,pid,cmd --sort=-rss,-vsz \
             | awk "{ if (\$1 > 10000) print }"'

alias updatesys='sudo pacman -Syu'
alias vi='vim'
alias mtr='mtr -t'
alias pacman='sudo pacman'
alias cranky='ssh -l dave www.crankyadmin.net'
alias extrium='ssh -l dave www.extrium.co.uk -p 22022'
#___________________________________________________________________________
# generic functions

# do ls right after cd
cd () {
  if [ -n $1 ]; then
    builtin cd "$@" && ls
  else
    builtin cd ~ && ls
  fi
}

# list files only
lf () { ls -1p $@ | grep -v '\/$' }

# grep process by name and list the results nicely
pg () {
    if pgrep -f $@ > /dev/null;
    then
        pgrep -f $@ | xargs ps -o user,pid,stat,rss,vsz,pcpu,args \
                               --sort -pcpu,-rss;
    else 
        exit 1;
    fi
}

# compile lilypond file and view pdf
ly () { lilypond $@ && evince $(basename $1 .ly).pdf; }

# look in WordNet and Webster
d () { curl dict://dict.org/d:${1}:wn; }
wd () { curl dict://dict.org/d:${1}:web1913; } 

# find matches of $1, with optional strat $2 and optional db $3
ref () 
{
    if [[ -z $3 ]]; then
        curl dict://dict.org/m:${1}:english:${2};
    else
        curl dict://dict.org/m:${1}:${3}:${2};
    fi
}

# define $1 using optional db of $2
def () { curl dict://dict.org/d:${1}:${2} }

# local WordNet lookups
syn () { wn $1 -synsn; wn $1 -synsv; wn $1 -synsa; wn $1 -synsr; }
ant () { wn $1 -antsn; wn $1 -antsv; wn $1 -antsa; wn $1 -antsr; }

# Set a pretty zsh prompt, taking 0..5 args as colors
setprompt ()
{
    # load this to use $fg
    autoload -U colors
    colors

    c1="%{${1:-"$fg[green]"}%}"             # main color for cmd, cwd, hist
    c2="%{${2:-"$fg_no_bold[cyan]"}%}"      # color for user@host
    c3="%{${3:-"$fg_bold[white]"}%}"         # color for =,()
    c4="%{${4:-"$fg[white]"}%}"             # time and arrow color
    c5="%{${5:-"$fg[red]"}%}"               # root color

    now="$c3($c4%D{%H:%M} %D{%a %b %d}$c3)"
    userhost="%(!.$c5.$c2)%n$c3@$c2%m"

    line2="$userhost ${c3}[$c1%h$c3] ${c4}--> %(!.$c5.$c1)"
    newline=$'\n%{\r%}'

    # truncate and pad line1 appropiately
    precmd () {
        local cwdrealwidth=${#${(%):-%~}}
        
        # length of $line1 w/o $cwd = 22
        if [[ "$cwdrealwidth + 22" -gt $COLUMNS ]]; 
        then
            # truncate
            local cwdwidth = (( $COLUMNS - 22 ))
        else
            # pad
            local padding="${(l.(($COLUMNS - 22 - $cwdrealwidth )))..-.)}"
        fi
        
        local cwd="$c1%$cwdwidth<...<%~%<<"
        local line1="$c3-($cwd$c3)-${padding}$now"
        export PROMPT="${line1}$newline$line2"
    }
       
    preexec () { print -n "$reset_color" }
}

#___________________________________________________________________________
# env

export EDITOR=vi
export LS_COLORS='di=92:ex=33'
export GREP_OPTIONS='--color=auto'

# e.g. do 'PM man $@' to read colorized man pages
alias PM='PAGER=most' 

safecolors () 
{
    setprompt $fg[green] $fg[blue] $fg[white]
    export LS_COLORS='di=32:ex=35'
}

#___________________________________________________________________________
# execute
PATH=$PATH:$HOME/bin/:/usr/local/bin/:/opt/local/bin/
uptime
echo ${(l.77..-.)}
setprompt