Update zsh configuration
authorTom Hughes <tom@compton.nu>
Tue, 15 Nov 2016 09:03:48 +0000 (09:03 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 15 Nov 2016 09:03:48 +0000 (09:03 +0000)
cookbooks/accounts/files/default/tomh/.dir_colors [new file with mode: 0644]
cookbooks/accounts/files/default/tomh/.zcomp [deleted file]
cookbooks/accounts/files/default/tomh/.zshenv [new file with mode: 0644]
cookbooks/accounts/files/default/tomh/.zshrc

diff --git a/cookbooks/accounts/files/default/tomh/.dir_colors b/cookbooks/accounts/files/default/tomh/.dir_colors
new file mode 100644 (file)
index 0000000..d9d926f
--- /dev/null
@@ -0,0 +1,221 @@
+# Configuration file for the 256color ls utility
+# This file goes in the /etc directory, and must be world readable.
+# Synchronized with coreutils 8.5 dircolors
+# You can copy this file to .dir_colors in your $HOME directory to override
+# the system defaults.
+# In the case that you are not satisfied with supplied colors, please
+# submit your color configuration or attach your file with colors readable
+# on ALL color background schemas (white,gray,black) to RedHat Bugzilla
+# ticket on https://bugzilla.redhat.com/show_bug.cgi?id=429121 . TIA.
+# Please just keep ls color conventions from 8 color scheme.
+
+# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
+# pipes. 'all' adds color characters to all output. 'none' shuts colorization
+# off.
+COLOR tty
+
+# Extra command line options for ls go here.
+# Basically these ones are:
+#  -F = show '/' for dirs, '*' for executables, etc.
+#  -T 0 = don't trust tab spacing when formatting ls output.
+OPTIONS -F -T 0
+
+# Below, there should be one TERM entry for each termtype that is colorizable
+TERM putty-256color
+TERM rxvt-256color
+TERM rxvt-unicode-256color
+TERM rxvt-unicode256
+TERM screen-256color
+TERM xterm-256color
+TERM gnome-256color
+
+# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
+EIGHTBIT 1
+
+# Below are the color init strings for the basic file types. A color init
+# string consists of one or more of the following numeric codes:
+# Attribute codes:
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
+# Text color(8 colors mode) codes:
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
+# Background color(8 colors mode) codes:
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
+# Text color(256 colors mode) codes:
+# Valid syntax for text 256color is 38;5;<color number> , where color number
+# is number between 0 and 255.
+# You may find following command useful to search the best one for you:
+# for ((x=0; x<=255; x++));do echo -e "${x}:\033[38;5;${x}mcolor\033[000m";done
+# Background color(256 colors mode) codes:
+# Valid syntax for background 256color is 48;5;<color number> , where
+# color number is number between 0 and 255.
+# You may find following command useful to search the best one for you:
+# for ((x=0; x<=255; x++));do echo -e "${x}:\033[48;5;${x}mcolor\033[000m";done
+
+#NORMAL 00     # global default, no color code at all
+#FILE 00       # normal file, use no color at all
+RESET 0 # reset to "normal" color
+DIR 38;5;27    # directory
+LINK 38;5;37   # symbolic link (If you set this to 'target' instead of a
+               # numerical value, the color is as for the file pointed to.)
+MULTIHARDLINK 44;38;5;15 # regular file with more than one link
+FIFO 40;38;5;11        # pipe
+SOCK 38;5;13   # socket
+DOOR 38;5;5    # door
+BLK 48;5;232;38;5;11   # block device driver
+CHR 48;5;232;38;5;3    # character device driver
+ORPHAN 48;5;232;38;5;9  # symlink to nonexistent file, or non-stat'able file
+MISSING 05;48;5;232;38;5;15 # ... and the files they point to
+SETUID 48;5;196;38;5;15        # file that is setuid (u+s)
+SETGID 48;5;11;38;5;16 # file that is setgid (g+s)
+CAPABILITY 48;5;196;38;5;226   # file with capability
+STICKY_OTHER_WRITABLE 48;5;10;38;5;16 # dir that is sticky and other-writable (+t,o+w)
+OTHER_WRITABLE 48;5;10;38;5;21 # dir that is other-writable (o+w) and not sticky
+STICKY 48;5;21;38;5;15 # dir with the sticky bit set (+t) and not other-writable
+
+# This is for files with execute permission:
+EXEC 38;5;34
+
+# List any file extensions like '.gz' or '.tar' that you would like ls
+# to colorize below. Put the extension, a space, and the color init string.
+# (and any comments you want to add after a '#')
+# executables (bright green)
+#.cmd 38;5;34
+#.exe 38;5;34
+#.com 38;5;34
+#.btm 38;5;34
+#.bat 38;5;34
+#.sh  38;5;34
+#.csh 38;5;34
+ # archives or compressed (bright red)
+.tar 38;5;9
+.tgz 38;5;9
+.arj 38;5;9
+.taz 38;5;9
+.lzh 38;5;9
+.lzma 38;5;9
+.tlz 38;5;9
+.txz 38;5;9
+.zip 38;5;9
+.z   38;5;9
+.Z   38;5;9
+.dz  38;5;9
+.gz  38;5;9
+.lz  38;5;9
+.xz  38;5;9
+.bz2 38;5;9
+.tbz 38;5;9
+.tbz2 38;5;9
+.bz  38;5;9
+.tz  38;5;9
+.deb 38;5;9
+.rpm 38;5;9
+.jar 38;5;9
+.war 38;5;9
+.ear 38;5;9
+.sar 38;5;9
+.rar 38;5;9
+.ace 38;5;9
+.zoo 38;5;9
+.cpio 38;5;9
+.7z  38;5;9
+.rz  38;5;9
+
+# image formats (magenta)
+.jpg 38;5;13
+.jpeg 38;5;13
+.gif 38;5;13
+.bmp 38;5;13
+.pbm 38;5;13
+.pgm 38;5;13
+.ppm 38;5;13
+.tga 38;5;13
+.xbm 38;5;13
+.xpm 38;5;13
+.tif 38;5;13
+.tiff 38;5;13
+.png 38;5;13
+.svg 38;5;13
+.svgz 38;5;13
+.mng 38;5;13
+.pcx 38;5;13
+.mov 38;5;13
+.mpg 38;5;13
+.mpeg 38;5;13
+.m2v 38;5;13
+.mkv 38;5;13
+.ogm 38;5;13
+.mp4 38;5;13
+.m4v 38;5;13
+.mp4v 38;5;13
+.vob 38;5;13
+.qt  38;5;13
+.nuv 38;5;13
+.wmv 38;5;13
+.asf 38;5;13
+.rm  38;5;13
+.rmvb 38;5;13
+.flc 38;5;13
+.avi 38;5;13
+.fli 38;5;13
+.flv 38;5;13
+.gl 38;5;13
+.dl 38;5;13
+.xcf 38;5;13
+.xwd 38;5;13
+.yuv 38;5;13
+.cgm 38;5;13
+.emf 38;5;13
+
+# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
+.axv 38;5;13
+.anx 38;5;13
+.ogv 38;5;13
+.ogx 38;5;13
+
+# audio formats (cyan)
+.aac 38;5;45
+.au 38;5;45
+.flac 38;5;45
+.mid 38;5;45
+.midi 38;5;45
+.mka 38;5;45
+.mp3 38;5;45
+.mpc 38;5;45
+.ogg 38;5;45
+.ra 38;5;45
+.wav 38;5;45
+
+# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
+.axa 38;5;45
+.oga 38;5;45
+.spx 38;5;45
+.xspf 38;5;45
+
+# colorize binary documents (brown)
+#.pdf 00;33
+#.ps 00;33
+#.ps.gz 00;33
+#.tex 00;33
+#.xls 00;33
+#.xlsx 00;33
+#.ppt 00;33
+#.pptx 00;33
+#.rtf 00;33
+#.doc 00;33
+#.docx 00;33
+#.odt 00;33
+#.ods 00;33
+#.odp 00;33
+#.epub 00;33
+#.abw 00;33
+#.wpd 00;33
+#
+# colorize text documents (brown)
+#.txt 00;33
+#.patch 00;33
+#.diff 00;33
+#.log 00;33
+#.htm 00;33
+#.html 00;33
+#.shtml 00;33
+#.xml 00;33
diff --git a/cookbooks/accounts/files/default/tomh/.zcomp b/cookbooks/accounts/files/default/tomh/.zcomp
deleted file mode 100644 (file)
index a8142c6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# The following lines were added by compinstall
-
-zstyle ':completion:*' completer _complete
-zstyle ':completion:*' format 'Completing %d'
-zstyle ':completion:*' group-name ''
-zstyle ':completion:*' insert-unambiguous true
-zstyle ':completion:*' keep-prefix true
-zstyle ':completion:*' menu select=long
-zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
-zstyle :compinstall filename '/home/tom/.zcomp'
-
-autoload -U compinit
-compinit
-# End of lines added by compinstall
diff --git a/cookbooks/accounts/files/default/tomh/.zshenv b/cookbooks/accounts/files/default/tomh/.zshenv
new file mode 100644 (file)
index 0000000..d7ae3ba
--- /dev/null
@@ -0,0 +1,18 @@
+# Z-shell options
+setopt EXTENDED_GLOB
+setopt RC_EXPAND_PARAM
+
+# Set file creation mask
+umask 002
+
+# No core dumps
+limit coredumpsize 0
+
+# Set the function search path
+FPATH=${HOME}/zshfuncs:${FPATH}
+
+# Export the host name
+export HOST
+
+# Get the unqualified node name for this host
+NODE="${(M)HOST##[^.]##}"
index 34122108b900268f2f654603553ba7f7e0fa7688..9657879996ff21fc2cf5191f90abdada5c18a100 100644 (file)
@@ -1,30 +1,3 @@
-# Set file creation mask
-umask 002
-
-# # No core dumps
-limit coredumpsize 0
-
-# Terminal initialization
-stty -ixon
-ttyctl -f
-
-# Make sure we know the username
-if [[ -z "$USER" ]]
-then
-    USER=`logname`; export USER
-fi
-
-# Setup a default path
-PATH=.:$HOME/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin
-
-# Setup a pager
-PAGER=less; export PAGER
-LESS=aceiMs; export LESS
-
-# Use vi for editing
-EDITOR=/usr/bin/vi; export EDITOR
-VISUAL=/usr/bin/vi; export VISUAL
-
 # Z-shell options
 setopt ALL_EXPORT
 setopt AUTO_CD
@@ -33,86 +6,129 @@ setopt AUTO_MENU
 setopt CDABLE_VARS
 setopt CORRECT
 setopt CORRECT_ALL
-setopt EXTENDED_GLOB
+setopt HIST_EXPIRE_DUPS_FIRST
 setopt HIST_IGNORE_DUPS
 setopt HIST_NO_STORE
+setopt HIST_REDUCE_BLANKS
+setopt HIST_SAVE_NO_DUPS
+setopt INC_APPEND_HISTORY
 setopt LIST_AMBIGUOUS
 setopt LIST_TYPES
 setopt LONG_LIST_JOBS
 setopt NO_BEEP
 setopt NO_NOMATCH
 setopt NOTIFY
-setopt RC_EXPAND_PARAM
+setopt PROMPT_SUBST
+setopt PUSHD_SILENT
 setopt SH_WORD_SPLIT
 
+# Disable bracketed paste mode
+unset zle_bracketed_paste
+
 # Keep tramp happy
 if [[ "$TERM" = "dumb" ]]
 then
     unsetopt ZLE
 fi
 
+# Fallback to a more basic terminal type if necessary
+if [[ -z "${terminfo[cols]}" ]]
+then
+    case "$TERM" in
+        xterm*) TERM="xterm";;
+    esac
+fi
+
+# Lock the terminal
+ttyctl -f
+
+# Make sure we know the username
+if [[ -z "$USER" ]]
+then
+    USER="$(id -un)"; export USER
+fi
+
+# Setup a default path
+PATH=".:${HOME}/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin"
+
+# Setup a pager
+PAGER="less"; export PAGER
+LESS="aceiMs"; export LESS
+
+# Use vi for editing
+EDITOR=/usr/bin/vi; export EDITOR
+VISUAL=/usr/bin/vi; export VISUAL
+
 # History setup
 HISTFILE=$HOME/.zshhistory
-SAVEHIST=200
-HISTSIZE=200
+SAVEHIST=1000
+HISTSIZE=1500
 
-# Files to ignore when completing
+# Ignore certain files when doing expansion
 fignore=( \~ \# .o )
 
 # Set the prompt
-if [[ "$TERM" == "xterm" ]]
-then
-    PROMPT="%{\e]2;%M\a%}%m [%~] %# "
-else
-    PROMPT="%m [%~] %# "
-fi
+case "$TERM" in
+    xterm*) PROMPT="%{\e]0;\${ENVIRONMENT:+\${ENVIRONMENT} on} %M\a%}%m [%~] %# ";;
+    screen*) PROMPT="%{\ek\${ENVIRONMENT:+\${ENVIRONMENT} on} %M\e\%}%m [%~] %# ";;
+    *) PROMPT="%m [%~] %# ";;
+esac
 
-# Set aliases
-alias ls="ls -CFh"
+# Configure directory colours
+eval "$(/usr/bin/dircolors --sh ${HOME}/.dir_colors)"
+
+# Setup aliases
+alias ls="ls -CFhv --color=auto"
 alias df="df -h"
 alias du="du -h"
+alias grep="grep --color=auto"
+alias egrep="egrep --color=auto"
+alias fgrep="fgrep --color=auto"
+alias cd="nocorrect cd"         # no spelling correction on cd
 alias mv="nocorrect mv"         # no spelling correction on mv
 alias cp="nocorrect cp"         # no spelling correction on cp
 alias mkdir="nocorrect mkdir"   # no spelling correction on mkdir
 alias man="nocorrect man"      # no spelling correction on man
 alias pg="less"
-alias mailq="/usr/sbin/exim -bp"
-alias runq="sudo /usr/sbin/exim -qq"
-alias mailrm="sudo /usr/sbin/exim -Mrm"
-alias mailedit="sudo /usr/sbin/exim -Meb"
-alias mailfreeze="sudo /usr/sbin/exim -Mf"
-alias mailthaw="sudo /usr/sbin/exim -Mt"
-
-# ish type history list (zsh: ctrl-v key, emacs ctrl-q key)
-bindkey "\eOA"  history-beginning-search-backward \
-        "\e[A"  history-beginning-search-backward \
-        "\eOB"  history-beginning-search-forward  \
-        "\e[B"  history-beginning-search-forward  \
-        "\eOU"  end-of-line                       \
-        "\e[U"  end-of-line                       \
-        "^A"    beginning-of-line                 \
-        "^E"    end-of-line                       \
-        "\eOV"  beginning-of-line                 \
-        "\e[V"  beginning-of-line                 \
-        "\eOD"  backward-char                     \
-        "\e[D"  backward-char                     \
-        "\eOC"  forward-char                      \
-        "\e[C"  forward-char                      \
-        "^F"    forward-word                      \
-        "^B"    backward-word                     \
-        "\e[2~" overwrite-mode                    \
-        "^P"    push-line                         \
-       "^K"    kill-line                         \
-       "\e[3~" delete-char
-
-# Completion options
-. $HOME/.zcomp
-
-# Add the local functions to the function search path
-fpath=($HOME/zshfuncs $fpath)
-
-# Autoload all functions on the function search path
-foreach file in $HOME/zshfuncs/*
-do
-    autoload `basename $file`
-done
+
+# Select the emacs key map
+bindkey -A emacs main
+
+# Bind various keys - hard code xterm bindings to match linux xterms
+case "$TERM" in
+    dumb)
+        ;;
+    xterm*)
+        bindkey "^[OA" history-beginning-search-backward
+        bindkey "^[[A" history-beginning-search-backward
+        bindkey "^[OB" history-beginning-search-forward
+        bindkey "^[[B" history-beginning-search-forward
+        bindkey "^[OH" beginning-of-line
+        bindkey "^[OF" end-of-line
+        bindkey "^[[2~" overwrite-mode
+        bindkey "^[[3~" delete-char;;
+    *)
+        bindkey "${terminfo[kcuu1]}" history-beginning-search-backward
+        bindkey "^[[A" history-beginning-search-backward
+        bindkey "${terminfo[kcud1]}" history-beginning-search-forward
+        bindkey "^[[B" history-beginning-search-forward
+        bindkey "${terminfo[khome]}" beginning-of-line
+        bindkey "${terminfo[kend]}" end-of-line
+        bindkey "${terminfo[kich1]}" overwrite-mode
+        bindkey "${terminfo[kdch1]}" delete-char;;
+esac
+
+# Configure completion
+zstyle ":completion:*" completer _complete _approximate
+zstyle ":completion:*" format "Completing %d"
+zstyle ":completion:*" group-name ""
+zstyle ":completion:*" menu select=long
+zstyle ":completion:*" rehash true
+zstyle ":completion:*" select-prompt "%SScrolling active: current selection at %p%s"
+
+# Enable completion
+autoload -U compinit
+compinit
+
+# Autoload all local functions
+autoload ${HOME}/zshfuncs/*(:t)