-if [ -n "$HOME" ]; then
- HISTFILE="$HOME/.zsh_history"
- SAVEHIST=1000
+# Copyright © 2009-2011, 2017-2018 Nick Bowler
+#
+# Default configuration for interactive zsh.
+#
+# License WTFPL2: Do What The Fuck You Want To Public License, version 2.
+# This is free software: you are free to do what the fuck you want to.
+# There is NO WARRANTY, to the extent permitted by law.
+
+# Default shell options
+setopt EXTENDED_GLOB
+
+if [[ -n $HOME ]]; then
+ HISTFILE=$HOME/.zsh_history
+ SAVEHIST=10000
fi
-HISTSIZE=1000
+HISTSIZE=10000
-bindkey -e
+reset_keymap() {
+ local k del home end
-case "$TERM" in
-rxvt*)
- if [ "$TERM" = "rxvt-unicode" ]; then
- [ -z "$COLORTERM" ] && export COLORTERM="rxvt-xpm"
- [ -z "$COLORFGBG" ] && export COLORFGBG="15;default;0"
- fi
+ case $# in
+ 0) : ;;
+ *) export KEYMAP=$1 ;;
+ esac
- bindkey '\e[3~' delete-char
- bindkey '\e[8~' end-of-line
- bindkey '\e[7~' beginning-of-line
-;;
-screen*|linux)
- bindkey '\e[3~' delete-char
- bindkey '\e[4~' end-of-line
- bindkey '\e[1~' beginning-of-line
-;;
-xterm)
- bindkey '\e[3~' delete-char
- bindkey '\e[F' end-of-line
- bindkey '\e[H' beginning-of-line
- bindkey '\eOH' beginning-of-line
- bindkey '\eOF' end-of-line
-;;
-esac
+ case $TERM in
+ rxvt*)
+ del=('\e[3~') home=('\e[7~') end=('\e[8~') ;;
+ screen*|linux|cygwin)
+ del=('\e[3~') home=('\e[1~') end=('\e[4~') ;;
+ cons25)
+ del=('^?') home=('\e[H') end=('\e[F') ;;
+ xterm*)
+ del=('\e[3~')
+ home=('\e[1~' '\e[H' '\e[OH')
+ end=('\e[4~' '\e[F' '\e[OF')
+ ;;
+ esac
+
+ bindkey -e
+ for k in "${del[@]}"; do bindkey "$k" delete-char; done
+ for k in "${home[@]}"; do bindkey "$k" beginning-of-line; done
+ for k in "${end[@]}"; do bindkey "$k" end-of-line; done
+
+ stty stop ''
+ case $KEYMAP in
+ colemak)
+ bindkey '^R' history-incremental-search-forward
+ bindkey '^P' history-incremental-search-backward
+ stty eof '^S' ;;
+ *)
+ stty eof '^D' ;;
+ esac
+}
+reset_keymap
+
+reset() {
+ command reset
+ reset_keymap
+}
# Set the xterm title
-case "$TERM" in
+case $TERM in
xterm*|rxvt*|Eterm|aterm|kterm|gnome*)
settitle() { print -Pn $'\e]0;%n@%m %33<...<%~%<<\a' }
;;
;;
esac
+# Show the return code of failed commands, but don't be noisy about it.
precmd() {
settitle
- if [[ -n "$__NEWRUN" ]]; then
- RPS1=$'%(0?,,%{\e[31;1m%}RC=%?%{\e[0m%})'
+ if [[ -n $__NEWRUN ]]; then
+ RPS1='%(0?,,%B%F{red}RC=%?%f%b)'
unset __NEWRUN
else
unset RPS1
__NEWRUN=yes
}
-if [ -n "$COLORTERM" ]; then
- PS1=$'%(!,%{\e[31;1m%},%{\e[32;1m%}%n@)%m%{\e[34;1m%} %33<...<%~%<< %#%{\e[0m%} '
+# A gentoo-like prompt.
+PS1='%B%(!,%F{red},%F{green}%n@)%m %F{blue}%33<...<%~%<< %#%f%b '
- # Random colour-related options
+if [ -n $COLORTERM ]; then
+ # Assorted colour-related options
export MINICOM="-c on"
-else
- PS1='%n@%m %33<...<%~%<< %# '
fi
-if [[ -n "$SSH_CONNECTION" ]]; then
- PS1="${PS1/\[32/[33}"
+if [[ -n $SSH_CONNECTION ]]; then
+ PS1=${PS1/green/yellow}
fi
-# I like colours
-alias ls='ls --color=auto'
+# Locale
+export LANG=en_CA.UTF-8
+export LC_COLLATE=ja_JP.UTF-8
+
+# Default options for various utilities.
+alias ls='ls -N --time-style=long-iso --color=auto'
alias grep='grep --color=auto'
# I hate mistakes
alias mv='mv -i'
alias rm='rm -i'
alias cp='cp -i'
+
+# Common aliases
+alias vv='$EDITOR ~/.zshrc && source ~/.zshrc'
+alias ll='ls -l'
+alias lr='ls -rtl'