psoxizsh/zshrc

281 lines
9 KiB
Bash
Executable file

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
[[ "$LANGUAGE" == "" ]] && export LANGUAGE=en_US.UTF-8
[[ "$LANG" == "" ]] && export LANG=en_US.UTF-8
[[ "$LC_ALL" == "" ]] && export LC_ALL=en_US.UTF-8
[[ -d /etc/psoxizsh ]] && export PSOXIZSH=/etc/psoxizsh
[[ -d ~/.psoxizsh ]] && export PSOXIZSH=~/.psoxizsh
[[ "$TERM" == "linux" ]] && export TERM=vte-256color
# remove duplicates
typeset -U PATH path fpath
path=( /bin /sbin /usr/bin /usr/sbin $path )
[[ -d ~/bin ]] && path=( ~/bin $path )
# sdkman support
[[ -f ~/.sdkman/bin/sdkman-init.sh ]] && source ~/.sdkman/bin/sdkman-init.sh
# nvm
[[ -f /usr/share/nvm/init-nvm.sh ]] && source /usr/share/nvm/init-nvm.sh
# jaesve support
( which jaesve &>/dev/null ) && (
[[ -d ~/.local/share/zsh/functions ]] || mkdir -vp ~/.local/share/zsh/functions
[[ $(which jaesve) -nt ~/.local/share/zsh/functions/_jaesve ]] || (
jaesve completions -- zsh > ~/.local/share/zsh/functions/_jaesve
)
)
# Set funtion paths
foreach local p in ~/.local/share/zsh/functions ~/.config/zsh/functions $extra_fpath
[[ -d "$p" ]] && fpath=( "$p" $fpath )
end
[[ "$OS" != "Windows_NT" ]] && [[ -f /etc/profile ]] && source /etc/profile
if [[ -z "$GOPATH" ]]
then
if [[ -d /cygdrive/s/develop/go ]]
then
export GOPATH=$(echo /cygdrive/s/develop/go)
elif [[ -d ~/Develop/go ]]
then
export GOPATH=$(echo ~/Develop/go)
elif [[ -d ~/develop/go ]]
then
export GOPATH=$(echo ~/develop/go)
else
export GOPATH=$(echo ~/go)
fi
fi
path+=( $GOPATH/bin ${GOROOT+${GOROOT}/bin} )
# check for starship
if which starship &>/dev/null && [[ ! -e ~/.no-starship ]]
then
export _STARSHIP_Y_="yes"
fi
# Path to your oh-my-zsh installation.
export ZSH=$PSOXIZSH/oh-my-zsh
export ZSH_CACHE_DIR=~/.cache/zsh
[[ ! -d $ZSH_CACHE_DIR ]] && mkdir -p $ZSH_CACHE_DIR
[[ -z "$ZSH_THEME" ]] && [[ -z "$_STARSHIP_Y_" ]] && export ZSH_THEME="stemmet"
DISABLE_AUTO_UPDATE="true"
COMPLETION_WAITING_DOTS="true"
DISABLE_UNTRACKED_FILES_DIRTY="true"
HIST_STAMPS="yyyy-mm-dd"
ZSH_CUSTOM=$(dirname $ZSH)/zsh-custom
plugins=(
$pre_plugins
gnu-utils
common-aliases
colored-man-pages
)
( which git &>/dev/null ) &&
plugins+=( git git-extras git-flow-avh ) &&
[[ "$ZSH_THEME" == "stemmet" ]] &&
[ -z "$_STARSHIP_Y_" ] &&
plugins+=( git-prompt )
( which perl &>/dev/null ) && plugins+=( perl )
( which go &>/dev/null ) && plugins+=( golang )
( which oc &>/dev/null ) && plugins+=( oc )
( which rsync &>/dev/null ) && plugins+=( rsync )
( which aws &>/dev/null ) && plugins+=( aws )
( which rust &>/dev/null ) && plugins+=( rust )
( which jq &>/dev/null ) && plugins+=( jsontools )
( which encode64 &>/dev/null ) && plugins+=( encode64 )
( which docker-compose &>/dev/null ) && plugins+=( docker-compose )
( which docker &>/dev/null ) && plugins+=( docker )
( which mosh &>/dev/null ) && plugins+=( mosh )
( which systemd &>/dev/null ) && plugins+=( systemd )
( which python &>/dev/null ) && plugins+=( python )
( which pip &>/dev/null ) && plugins+=( pip )
( which sudo &>/dev/null ) && plugins+=( sudo )
( which tmux &>/dev/null ) && plugins+=( tmux )
( which yum &>/dev/null ) && plugins+=( yum )
( which code &>/dev/null ) && plugins+=( vscode )
( which strfile &>/dev/null ) && plugins+=( chucknorris )
( which kubectl &>/dev/null ) && plugins+=( kubectl )
( which bazel &>/dev/null ) && plugins+=( bazel )
( which podman &>/dev/null ) && plugins+=( podman )
( [[ -e /etc/arch-release ]] ) && plugins+=( archlinux )
( [[ -e /etc/suse-release ]] ) && plugins+=( suse )
( [[ "$(uname)" == "Darwin" ]] ) && plugins+=( macos )
#( which vim &>/dev/null ) && plugins+=( vim-interaction )
( which ssh &>/dev/null ) && [[ -d ~/.ssh ]] && plugins+=( ssh-agent )
plugins+=(
zsh-completions
zsh-autosuggestions
zsh-navigation-tools
$( which fzf &>/dev/null && echo 'fzf' )
zsh-syntax-highlighting
$post_plugins
)
if [[ "$OSTYPE" =~ "linux*" || "$OSTYPE" =~ "darwin*" || "$OSTYPE" == "cygwin" ]]
then
export VIMHOME=~/.vim
# If neovim is installed, assume that we will not be supporting standard vim
if which nvim &>/dev/null
then
[[ -d ~/.config/nvim/lua/config ]] || mkdir -p ~/.config/nvim/lua/config
[[ -d ~/.config/nvim/lua/plugins ]] || mkdir -p ~/.config/nvim/lua/plugins
[[ -e ~/.config/nvim/init.lua ]] || ln -s $PSOXIZSH/init.lua ~/.config/nvim/init.lua
[[ -e ~/.config/nvim/lua/plugins/init.lua ]] || echo 'return {}' > ~/.config/nvim/lua/plugins/init.lua
else
export VIMINIT='source $MYVIMRC'
export MYVIMRC=$PSOXIZSH/vimrc
cmp $PSOXIZSH/vim/autoload/plug.vim $VIMHOME/autoload/plug.vim 2>/dev/null || (
mkdir -vp $VIMHOME/autoload/
cp -av $PSOXIZSH/vim/autoload/plug.vim $VIMHOME/autoload/plug.vim
)
fi
if [[ -n ${PSOXIZSH_EXPERIMENTAL_NEOVIM_LUA} ]]
then
if [[ ! -e ~/.cache/.psoxizsh_did_warn_neovim_lua ]]
then
echo "$0:$LINENO: The environment variable 'PSOXIZSH_EXPERIMENTAL_NEOVIM_LUA' is now unused, and may be removed"
touch ~/.cache/.psoxizsh_did_warn_neovim_lua &>/dev/null
fi
fi
fi
if [[ -d ~/.ssh ]]
then
zstyle :omz:plugins:ssh-agent lifetime 36h
zstyle :omz:plugins:ssh-agent agent-forwarding on
if [[ -e ~/.ssh/autoload ]]
then
zstyle :omz:plugins:ssh-agent identities $( cat ~/.ssh/autoload )
fi
fi
[[ -d $ZSH ]] && source $ZSH/oh-my-zsh.sh
# Dynamic Completion
foreach cmd in kubectl kubeadm
( which $cmd &>/dev/null ) && source <($cmd completion zsh)
end
source $PSOXIZSH/zsh-custom/zshnip/zshnip.zsh
( which lxc &>/dev/null ) && source $PSOXIZSH/zsh-custom/lxd-completion-zsh/_lxc
( which vi &>/dev/null ) && export EDITOR='vi'
( which vim &>/dev/null ) && export EDITOR='vim'
( which nvim &>/dev/null ) && export EDITOR='nvim'
# Set zsh tmux config path
if which tmux &>/dev/null
then
[ -z "$TMUX_PATH" ] && TMUX_PATH=~/.config/tmux
# Bootstrap the users plugin directory, if required
[ -d "$TMUX_PATH/plugins" ] || {
mkdir -vp "$TMUX_PATH/plugins" &&
cp -r "$PSOXIZSH/tmux/plugins" "$TMUX_PATH/plugins"
}
# Both tmux and TPM are very opininated about where configs must live,
# and TPM will only expand one layer of source-file directives, so we
# symlink the base config to the user local config file, if it does not
# exist.
[ ! -f ~/.tmux.conf ] && ln -s $PSOXIZSH/tmux/tmux.conf ~/.tmux.conf
[ ! -f "$TMUX_PATH/plugins.conf" ] && ln -s "$PSOXIZSH/tmux/fragment/plugins.conf" "$TMUX_PATH/plugins.conf"
export TMUX_PATH=$TMUX_PATH TMUX_PLUGINS="$TMUX_PATH/plugins" TMUX_CONFIG=~/.tmux.conf
fi
if which fzf &>/dev/null
then
# Press ? inside a C-r search to get a preview window, useful for long commands
export FZF_CTRL_R_OPTS="--preview 'echo {}' --preview-window down:3:hidden:wrap --bind '?:toggle-preview'"
which tmux &> /dev/null && export FZF_TMUX=1
fi
alias zshconfig="vim $PSOXIZSH/zshrc"
alias ohmyzsh="vim $PSOXIZSH/oh-my-zsh"
alias curlj="curl -H 'Content-Type: application/json' "
which nvim >/dev/null 2>&1 && alias vim="$(which nvim)"
alias v=vim
[[ -x /usr/bin/yay ]] && [[ "$(whoami)" != "pacman" ]] && alias yay='sudo -iupacman /usr/bin/yay'
[[ -x /usr/bin/paru ]] && [[ "$(whoami)" != "pacman" ]] && alias paru='sudo -iupacman /usr/bin/paru'
typeset -A key
# setup key accordingly
bindkey -- "^[[1~" beginning-of-line
bindkey -- "^[[4~" end-of-line
bindkey -- "^[[2~" overwrite-mode
bindkey -- "^H" backward-delete-char
bindkey -- "^[[3~" delete-char
bindkey -- "^[OD" backward-char
bindkey -- "^[OC" forward-char
bindkey -- "^[OA" up-line-or-history
bindkey -- "^[OB" down-line-or-history
#bindkey -- "^[[1;5A" history-substring-search-up
#bindkey -- "^[[1;5B" history-substring-search-down
bindkey '\ej' zshnip-expand-or-edit # Alt-J
bindkey '\ee' zshnip-edit-and-expand # Alt-E
# cutomize options
setopt no_bang_hist cdable_vars auto_name_dirs
# Finally, make sure the terminal is in application mode, when zle is
# active. Only then are the values from $terminfo valid.
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} ))
then
function zle-line-init () {
echoti smkx
}
function zle-line-finish () {
echoti rmkx
}
zle -N zle-line-init
zle -N zle-line-finish
fi
[[ -d /cygdrive/c/qemu/ ]] && path+=( /cygdrive/c/qemu/ )
( which xhost &>/dev/null ) && [[ -n "$DISPLAY" ]] && xhost +LOCAL:
# Set Time Variables
precmd() {
export _DATE_=$(date -u +%Y%m%d)
export _TIME_=$(date -u +%H%M%S)
export _DTTS_="${_DATE_}T${_TIME_}Z"
if [[ -n "$KUBECONFIG" && -z "$_STARSHIP_Y_" ]]
then
export KUBE_VARS=$(basename $KUBECONFIG)/$(kubectl config current-context)
else
unset KUBE_VARS
fi
}
if [[ -n "$_STARSHIP_Y_" ]]
then
[[ ! -e ~/.config/starship.toml ]] && install -v -D $PSOXIZSH/starship.toml ~/.config/starship.toml
source <(starship init zsh --print-full-init)
fi
# alias reload
alias src='omz reload'
# Remove unwanted aliases
( where fd | grep -qE '/s?bin/fd' ) && alias fd &>/dev/null && unalias fd
# Clean up global aliases
source <(alias -g | awk -F= '/^[A-Za-z]+/{print $1}' | xargs -I{} -n1 echo unalias "'{}'")
# vim: sw=2 ts=8 si relativenumber number