From: Tom Hughes Date: Tue, 15 Nov 2016 09:03:48 +0000 (+0000) Subject: Update zsh configuration X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/7ac8709dc5be2b83ed87e5a44be2824a3ea07110 Update zsh configuration --- diff --git a/cookbooks/accounts/files/default/tomh/.dir_colors b/cookbooks/accounts/files/default/tomh/.dir_colors new file mode 100644 index 000000000..d9d926ffc --- /dev/null +++ b/cookbooks/accounts/files/default/tomh/.dir_colors @@ -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; , 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; , 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 index a8142c6df..000000000 --- a/cookbooks/accounts/files/default/tomh/.zcomp +++ /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 index 000000000..d7ae3bab0 --- /dev/null +++ b/cookbooks/accounts/files/default/tomh/.zshenv @@ -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##[^.]##}" diff --git a/cookbooks/accounts/files/default/tomh/.zshrc b/cookbooks/accounts/files/default/tomh/.zshrc index 34122108b..965787999 100644 --- a/cookbooks/accounts/files/default/tomh/.zshrc +++ b/cookbooks/accounts/files/default/tomh/.zshrc @@ -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="%{]2;%M%}%m [%~] %# " -else - PROMPT="%m [%~] %# " -fi +case "$TERM" in + xterm*) PROMPT="%{]0;\${ENVIRONMENT:+\${ENVIRONMENT} on} %M%}%m [%~] %# ";; + screen*) PROMPT="%{k\${ENVIRONMENT:+\${ENVIRONMENT} on} %M\%}%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)