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