Added zsh improvements from work laptop and a doc
This commit is contained in:
parent
c66a2b5bf6
commit
697ecfc086
8 changed files with 148 additions and 1 deletions
4
home_zsh/.zsh/functions/chpwd_update_git_vars
Executable file
4
home_zsh/.zsh/functions/chpwd_update_git_vars
Executable 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
|
||||
5
home_zsh/.zsh/functions/precmd_update_git_vars
Executable file
5
home_zsh/.zsh/functions/precmd_update_git_vars
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
|
||||
update_current_git_vars
|
||||
unset __EXECUTED_GIT_COMMAND
|
||||
fi
|
||||
|
||||
6
home_zsh/.zsh/functions/preexec_update_git_vars
Executable file
6
home_zsh/.zsh/functions/preexec_update_git_vars
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
case "$1" in
|
||||
git*)
|
||||
__EXECUTED_GIT_COMMAND=1
|
||||
;;
|
||||
esac
|
||||
|
||||
32
home_zsh/.zsh/functions/prompt_git_info
Executable file
32
home_zsh/.zsh/functions/prompt_git_info
Executable 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
|
||||
|
||||
37
home_zsh/.zsh/functions/update_current_git_vars
Executable file
37
home_zsh/.zsh/functions/update_current_git_vars
Executable 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
|
||||
|
|
@ -6,6 +6,8 @@ alias ted='java -jar /home/tracey/bin/ted.jar'
|
|||
alias ll='ls -alFh --group-directories-first'
|
||||
alias la='ls -A'
|
||||
alias l='ls -CF'
|
||||
alias lad='ls -ldh' # ls directory
|
||||
alias tree='tree -Csu' # nice alternative to 'recursive ls'
|
||||
alias colo='ssh cp'
|
||||
alias colosync='ssh syncthing@cp'
|
||||
alias mountpi='sshfs -o idmap=user pi@pi3:/home/pi /home/tracey/pi3'
|
||||
|
|
|
|||
|
|
@ -6,6 +6,13 @@ prompt adam1
|
|||
|
||||
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
|
||||
bindkey -e
|
||||
|
||||
|
|
@ -15,8 +22,10 @@ SAVEHIST=1000
|
|||
HISTFILE=~/.zsh_history
|
||||
|
||||
# Use modern completion system
|
||||
autoload -Uz compinit
|
||||
autoload -U compinit promptinit zcalc zsh-mime-setup
|
||||
compinit
|
||||
promptinit
|
||||
zsh-mime-setup
|
||||
|
||||
zstyle ':completion:*' auto-description 'specify: %d'
|
||||
zstyle ':completion:*' completer _expand _complete _correct _approximate
|
||||
|
|
@ -45,3 +54,44 @@ fi
|
|||
|
||||
eval `ssh-agent -s` && ssh-agent
|
||||
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
11
home_zsh/zsh_notes.txt
Normal 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]
|
||||
Loading…
Add table
Add a link
Reference in a new issue