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 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'
|
||||||
|
|
|
||||||
|
|
@ -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
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