From: Simon Ruderich Date: Fri, 23 Apr 2010 20:01:17 +0000 (+0200) Subject: Merge remote branch 'rammstein/master' X-Git-Url: https://ruderich.org/simon/gitweb/?a=commitdiff_plain;h=0388e4464474e155fd41d18266813d9ac5795cac;hp=-c;p=config%2Fdotfiles.git Merge remote branch 'rammstein/master' --- 0388e4464474e155fd41d18266813d9ac5795cac diff --combined zsh/rc index 6fcc820,ee2737b..1a30e83 --- a/zsh/rc +++ b/zsh/rc @@@ -5,6 -5,9 +5,6 @@@ source_debug "sourcing ~/.zsh/rc # MISCELLANEOUS SETTINGS -# Use Vi(m) style key bindings. -bindkey -v - # Be paranoid, new files are readable/writable by me only. umask 077 @@@ -30,22 -33,6 +30,22 @@@ setopt extendedglo setopt ignoreeof +# KEY BINDINGS + +# Not all bindings are done here, only those not specific to a given section. + +# Use Vi(m) style key bindings. +bindkey -v + +# Also use jj to exit insert mode. +bindkey 'jj' vi-cmd-mode + +# I don't need the arrow keys, I use ^N and ^P for this (see below). +bindkey -r '^[OA' '^[OB' '^[OC' '^[OD' '^[[A' '^[[B' '^[[C' '^[[D' +# Also not in Vi mode. +bindkey -a -r '^[OA' '^[OB' '^[OC' '^[OD' '^[[A' '^[[B' '^[[C' '^[[D' + + # FUNCTION SETTINGS # Make sure every entry in $fpath is unique. @@@ -133,11 -120,11 +133,11 @@@ my-vi-history-beginning-search-backward zle vi-forward-char fi } -bindkey "^P" my-vi-history-beginning-search-backward -bindkey -a "^P" history-beginning-search-backward # binding for Vi-mode +bindkey '^P' my-vi-history-beginning-search-backward +bindkey -a '^P' history-beginning-search-backward # binding for Vi-mode # Here only Vi-mode is necessary as ^P enters Vi-mode and ^N only makes sense # after calling ^P. -bindkey -a "^N" history-beginning-search-forward +bindkey -a '^N' history-beginning-search-forward # PROMPT SETTINGS @@@ -145,7 -132,8 +145,8 @@@ # Use colorized output, necessary for prompts and completions. autoload -U colors && colors - # Some shortcuts for colors. + # Some shortcuts for colors. The %{...%} tells zsh that the data in between + # doesn't need any space, necessary for correct prompt draw. local red="%{${fg[red]}%}" local blue="%{${fg[blue]}%}" local green="%{${fg[green]}%}" @@@ -283,7 -271,7 +284,7 @@@ if [[ $TERM == screen* || $TERM == xter m) program_name=mutt ;; - v|vi) + v) program_name=vim ;; esac @@@ -318,21 -306,21 +319,21 @@@ [[ -z $window_reset ]] && return # Reset the window name to 'zsh'. - local name="zsh" + local name=zsh # If the function was called with an argument then reset the window # name to '.zsh' (used by clear alias). if [[ -n $1 ]]; then - name=".zsh" + name=.zsh fi # Prepend prefixes like in window_preexec(). + if [[ -n $window_root ]]; then + name="!$name" + fi if [[ -n $SSH_CONNECTION ]]; then - window_title "@$name" - elif [[ -n $window_root ]]; then - window_title "!$name" - else - window_title $name + name="@$name" fi + window_title $name # Just reset the name, so no screen reset necessary for the moment. window_reset= @@@ -347,9 -335,6 +348,9 @@@ window_title() { print -n "\e]2;$1\e\\" } + else + # Fallback if another TERM is used. + window_title() { } fi # Add the preexec() and precmd() hooks. @@@ -380,7 -365,7 +381,7 @@@ zstyle ':completion:*' completer _compl setopt nolistambiguous # Allow completions in the middle of a text, i.e. "/usr/bin/whatever" # completes like "/usr/bin/". Useful when adding new options to commands. -bindkey "^I" expand-or-complete-prefix +bindkey '^I' expand-or-complete-prefix # Try uppercase if the currently typed string doesn't match. This allows # typing in lowercase most of the time and completion fixes the case. zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' @@@ -401,12 -386,14 +402,14 @@@ zstyle ':completion:*' group-name ' zstyle ':completion:*:functions' ignored-patterns '_*' # Ignore parent directory. zstyle ':completion:*:(cd|mv|cp):*' ignore-parents parent pwd - # When unsetting variables make sure every variable name is only suggested - # once. - zstyle ':completion:*:unset:*' ignore-line yes - # When working with Mercurial and Git don't complete the same file multiple - # times. Very useful when completing file names. - zstyle ':completion:*:(hg|git)*:*' ignore-line yes + # Always complete one value (file name) only once in the current line. This + # makes it easy to complete multiple values because I can just press tab to + # get all possible values. Otherwise I would have to skip the first value + # again and again. + zstyle ':completion:*' ignore-line yes + # Except for mv and cp, because I often want to use to similar names, so I + # complete to the same and change it. + zstyle ':completion:*:(mv|cp):*' ignore-line no # CUSTOM ALIASES AND FUNCTIONS @@@ -417,12 -404,10 +420,12 @@@ # typing the command. # # Thanks to Vadim Zeitlin for a fix (--) so lines -# starting with - don't cause errors. +# starting with - don't cause errors; and to Nadav Har'El +# for a fix (-r) to handle whitespace/quotes +# correctly, both on the Zsh mailing list. TRAPINT() { # Store the current buffer in the history. - zle && print -s -- $BUFFER + zle && print -s -r -- $BUFFER # Return the default exit code so Zsh aborts the current command. return $1 @@@ -431,11 -416,10 +434,11 @@@ # Colorize stderr. Very useful when looking for errors. Thanks to # http://gentoo-wiki.com/wiki/Zsh for the basic script and Mikachu in #zsh on # Freenode (2010-03-07 04:03) for some improvements (-r, printf). It's not yet -# perfect and doesn't work with some interactive stderr output, but in those +# perfect and doesn't work with su and git for example, but it can handle most +# interactive output quite well (even with no trailing new line) and in those # cases the E alias can be used as workaround. -exec 2>>(while read -r line; do - printf '\e[91m%s\e[0m\n' "$line" +exec 2>>(while read -r -k -u 0 line; do + printf '\e[91m%s\e[0m' "$line"; print -n $'\0'; done &) @@@ -492,14 -476,16 +495,16 @@@ tig() # OS SPECIFIC SETTINGS - if [[ $(uname) == Linux ]]; then + local uname=$(uname) + + if [[ $uname == Linux ]]; then # Settings when creating Debian packages. DEBEMAIL=simon@ruderich.org export DEBEMAIL - DEBFULLNAME="Simon Ruderich" + DEBFULLNAME='Simon Ruderich' export DEBFULLNAME - elif [[ $(uname) == Darwin ]]; then # Mac OS X + elif [[ $uname == Darwin ]]; then # Mac OS X # Store the current clipboard in CLIPBOARD before every command so it can # be used in commands. os_darwin_preexec() {