#___________________________________________________________________________
# 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