Added zsh improvements from work laptop and a doc

This commit is contained in:
Tracey Clark 2017-10-11 10:10:45 -05:00
commit 697ecfc086
8 changed files with 148 additions and 1 deletions

View file

@ -0,0 +1,4 @@
# update the prompt after changing to a new directory.
# http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/
update_current_git_vars

View file

@ -0,0 +1,5 @@
if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
update_current_git_vars
unset __EXECUTED_GIT_COMMAND
fi

View file

@ -0,0 +1,6 @@
case "$1" in
git*)
__EXECUTED_GIT_COMMAND=1
;;
esac

View file

@ -0,0 +1,32 @@
# Git prompt stuff
# http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/
if [ -n "$__CURRENT_GIT_BRANCH" ]; then
local s="("
s+="$__CURRENT_GIT_BRANCH"
case "$__CURRENT_GIT_BRANCH_STATUS" in
ahead)
git_color="%{${fg[yellow]}%}"
s+="↑"
;;
diverged)
git_color="%{${fg[yellow]}%}"
s+="↕"
;;
behind)
git_color="%{${fg[yellow]}%}"
s+="↓"
;;
esac
if [ -n "$__CURRENT_GIT_BRANCH_IS_CLEAN" ]; then
git_color="%{${fg[green]}%}"
fi
if [ -n "$__CURRENT_GIT_BRANCH_IS_DIRTY" ]; then
git_color="%{${fg[red]}%}"
s+="⚡"
fi
s+=")"
printf " %s%s" "$git_color" $s
fi

View file

@ -0,0 +1,37 @@
# This file is used to set a few environment variables which will make it easy to build up our prompt
# http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/
unset __CURRENT_GIT_BRANCH
unset __CURRENT_GIT_BRANCH_STATUS
unset __CURRENT_GIT_BRANCH_IS_DIRTY
local st="$(git status 2>/dev/null)"
if [[ -n "$st" ]]; then
local -a arr
arr=(${(f)st})
if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then
__CURRENT_GIT_BRANCH='no-branch'
else
__CURRENT_GIT_BRANCH="${arr[1][(w)4]}";
fi
if [[ $st =~ 'nothing to commit, working directory clean' ]]; then
__CURRENT_GIT_BRANCH_IS_CLEAN='1'
fi
if [[ $arr[2] =~ 'Your branch is' ]]; then
if [[ $arr[2] =~ 'ahead' ]]; then
__CURRENT_GIT_BRANCH_STATUS='ahead'
elif [[ $arr[2] =~ 'diverged' ]]; then
__CURRENT_GIT_BRANCH_STATUS='diverged'
else
__CURRENT_GIT_BRANCH_STATUS='behind'
fi
fi
if [[ ! $st =~ 'nothing to commit' ]]; then
__CURRENT_GIT_BRANCH_IS_DIRTY='1'
fi
fi

View file

@ -6,6 +6,8 @@ alias ted='java -jar /home/tracey/bin/ted.jar'
alias ll='ls -alFh --group-directories-first' alias ll='ls -alFh --group-directories-first'
alias la='ls -A' alias la='ls -A'
alias l='ls -CF' alias l='ls -CF'
alias lad='ls -ldh' # ls directory
alias tree='tree -Csu' # nice alternative to 'recursive ls'
alias colo='ssh cp' alias colo='ssh cp'
alias colosync='ssh syncthing@cp' alias colosync='ssh syncthing@cp'
alias mountpi='sshfs -o idmap=user pi@pi3:/home/pi /home/tracey/pi3' alias mountpi='sshfs -o idmap=user pi@pi3:/home/pi /home/tracey/pi3'

View file

@ -6,6 +6,13 @@ prompt adam1
setopt histignorealldups sharehistory setopt histignorealldups sharehistory
#-------------------------------------------------------------
# Keybindings
#-------------------------------------------------------------
bindkey '^H' backward-kill-word
bindkey '^F' forward-word
bindkey '^B' backward-word
# Use emacs keybindings even if our EDITOR is set to vi # Use emacs keybindings even if our EDITOR is set to vi
bindkey -e bindkey -e
@ -15,8 +22,10 @@ SAVEHIST=1000
HISTFILE=~/.zsh_history HISTFILE=~/.zsh_history
# Use modern completion system # Use modern completion system
autoload -Uz compinit autoload -U compinit promptinit zcalc zsh-mime-setup
compinit compinit
promptinit
zsh-mime-setup
zstyle ':completion:*' auto-description 'specify: %d' zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate zstyle ':completion:*' completer _expand _complete _correct _approximate
@ -45,3 +54,44 @@ fi
eval `ssh-agent -s` && ssh-agent eval `ssh-agent -s` && ssh-agent
ssh-add .ssh/tlc_gitlab ssh-add .ssh/tlc_gitlab
#-------------------------------------------------------------
# Prompt bits
#-------------------------------------------------------------
# Initialize colors.
autoload -U colors
colors
# Allow for functions in the prompt.
setopt PROMPT_SUBST
# Autoload zsh functions.
fpath=(~/.zsh/functions $fpath)
autoload -U ~/.zsh/functions/*(:t)
# Enable auto-execution of functions.
typeset -ga preexec_functions
typeset -ga precmd_functions
typeset -ga chpwd_functions
# Append git functions needed for prompt.
preexec_functions+='preexec_update_git_vars'
precmd_functions+='precmd_update_git_vars'
chpwd_functions+='chpwd_update_git_vars'
# For terminix / tilix
if [[ $TERMINIX_ID ]]; then
source /etc/profile.d/vte.sh
fi
# Set the prompt.
#PROMPT=$'%{${fg[cyan]}%}%B%~%b$(prompt_git_info)%{${fg[default]}%} '
PROMPT=$'%{${fg[magenta]}%}%n%{$reset_color%}\@%{$fg[blue]%}%m%{$reset_color%} %{${fg[cyan]}%}%B%~%b$(prompt_git_info)%{${fg[default]}%} %{$fg[blue]%}%%%{$reset_color%} '
# Export stuff for sshfs over VPN
echo "SSH_AGENT_PID=$SSH_AGENT_PID; export SSH_AGENT_PID;" >~/.thestuff
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK; export SSH_AUTH_SOCK;" >>~/.thestuff
#ssh-agent
# Export key file to agent keychain
keychain --agents ssh --quick --quiet --noask /home/tracey/.ssh/*

11
home_zsh/zsh_notes.txt Normal file
View file

@ -0,0 +1,11 @@
#zsh notes
https://wiki.archlinux.org/index.php/Zsh
This is an example of a two-sided prompt:
PROMPT='%F{red}%n%f@%F{blue}%m%f %F{yellow}%1~%f %# '
RPROMPT='[%F{yellow}%?%f]'
And here's how it will be displayed:
username@host ~ % [0]