+# Aliases and similar functions which can be used by all shells (supporting
+# them).
+
+
+# Shortcuts for often used programs.
+alias c='clear'
+alias e='elinks'
+alias g='git'
+alias m='mutt'
+alias v='vim'
+alias vi='vim'
+
+
+# Improved ls which displays the files in columns (-C), visualizes
+# directories, links and other special files (-F) and pages everything through
+# less.
+#
+# If available use GNU ls with colorized output. If it isn't available try
+# normal ls which needs CLICOLOR_FORCE so it displays colors when used with a
+# pager. If none work no colors are used.
+
+# Check if colors are available.
+ls --color > /dev/null 2>&1
+if [ $? -eq 0 ]; then
+ ls_color=gnu
+else
+ ls -G > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ ls_color=cli
+ else
+ ls_color=
+ fi
+fi
+
+# Main ls function, separated to prevent code duplication.
+ls_path=`which ls`
+my_ls() {
+ "$ls_path" -C -F $* 2>&1 | less
+}
+# Make sure there is no alias named ls as it causes problems with the
+# following ls function on (at least) bash 4.0.35.
+unalias ls 2> /dev/null
+# GNU ls with colors.
+if [ x$ls_color = xgnu ]; then
+ ls() {
+ my_ls --color $*
+ }
+# Normal ls with colors.
+elif [ x$ls_color = xcli ]; then
+ ls() {
+ CLICOLOR_FORCE=1 my_ls $*
+ }
+# Simple ls with no colors.
+else
+ ls() {
+ my_ls $*
+ }
+fi
+unset ls_color
+# Helper function to list all files.
+la() {
+ ls -a $*
+}
+# Helper function to list all files in list format with access rights, etc.
+ll() {
+ la -l $*
+}
+
+
+# I sometimes confuse editor and shell, print a warning to prevent I exit the
+# shell.
+alias :q='echo "This is not Vim!" >&2'
+
+# Automatically use unified diffs.
+alias diff='diff -u'
+
+# Display all files and use human readable sizes.
+alias du='du -sh'
+# Use human readable sizes.
+alias df='df -h'
+
+# Edit the mercurial patch queue series file for the current mercurial
+# repository in Vim. Also change Vim's pwd to the patches directory so other
+# patches can easily be opened.
+alias vqs='vim -c "cd `hg root`/.hg/patches/" "`hg root`/.hg/patches/series"'
+
+# vim: ft=sh