]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - zsh/rc
Added support for colorized completions in zsh.
[config/dotfiles.git] / zsh / rc
diff --git a/zsh/rc b/zsh/rc
index 088c53dc6d9798990241a7c1847f8cc58505fa88..9b42bd102848da812253495902a5aa12607c347a 100644 (file)
--- a/zsh/rc
+++ b/zsh/rc
@@ -29,8 +29,9 @@ setopt autocd
 # one.
 setopt correct
 
-# Use colorized output.
+# Use colorized output, necessary for prompts and completions.
 autoload -U colors && colors
+
 # Set the default prompt. The current host and working directory is displayed,
 # the exit code of the last command if it wasn't 0 and a + if this shell is
 # running inside another shell.
@@ -42,14 +43,29 @@ PROMPT="%{${fg[green]}%}%B%m%b%{${fg[default]}%}:\
 
 # Use new completion system.
 autoload -U compinit && compinit
+# Load the complist module which provides additions to completion lists
+# (coloring, scrollable).
+zmodload zsh/complist
 # Make sure the list of possible completions is displayed after pressing <TAB>
 # the first time.
 setopt nolistambiguous
+# Allow completions in the middle of a text, i.e. "/usr/bin/<TAB>whatever"
+# completes like "/usr/bin/<TAB>". Useful when adding new options to commands.
+bindkey "^I" expand-or-complete-prefix
 # Use cache to speed up completions.
 zstyle ':completion:*' use-cache on
 zstyle ':completion:*' cache-path ~/.zsh/cache
 # Ignore case if currently typed string doesn't match.
 zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}'
+# Ignore completion functions.
+zstyle ':completion:*:functions' ignored-patterns '_*'
+# Ignore parent directory.
+zstyle ':completion:*:(cd|mv|cp):*' ignore-parents parent pwd
+# Use ls like colors for completions.
+zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+# Make completion lists scrollable so "do you wish to see all n possibilities"
+# is no longer displayed.
+zstyle ':completion:*' list-prompt '%p'
 
 # Enable zsh's extended glob abilities.
 setopt extendedglob
@@ -73,12 +89,26 @@ alias -g D='2>&1 | colordiff L'
 # Simplify calls to grep.
 alias -g G='| grep'
 
+# Improved ls which displays the files in columns (-C), visualises directories,
+# links and other special files (-F) and pages everything through less (L).
+function ls() {
+    command ls -C -F $* L
+}
+# Helper function to list all files.
+function la() {
+    ls -a $*
+}
+# Helper function to list all files in list format with access rights, etc.
+function ll() {
+    la -l $*
+}
 
-# If a rc.local file exists load it, otherwise load a rc file for the current
-# hostname (first part before a dot) if it exists.
+
+# If a rc file for the current hostname (first part before a dot) exists load
+# it, otherwise load rc.local if available.
 host=${$(hostname)//.*/}
-if [[ -f ~/.zsh/rc.local ]]; then;
-    source ~/.zsh/rc.local
-elif [[ -f ~/.zsh/rc.$host ]]; then;
+if [[ -f ~/.zsh/rc.$host ]]; then;
     source ~/.zsh/rc.$host
+elif [[ -f ~/.zsh/rc.local ]]; then;
+    source ~/.zsh/rc.local
 fi