FollieHiyuki-dotfiles/home/.config/zsh/.zshrc
2021-10-17 21:47:45 +07:00

183 lines
6.2 KiB
Bash

# Install Zinit if missing
[ -d $HOME/.local/share/zsh/zinit/bin ] || git clone https://github.com/zdharma/zinit.git $HOME/.local/share/zsh/zinit/bin
# Load zinit
source $HOME/.local/share/zsh/zinit/bin/zinit.zsh
# Load ls_colors
autoload -U colors && colors
# disable in favor of zinit built-in method to add completions
[ -d $HOME/.local/share/zsh/completions ] || mkdir -p $HOME/.local/share/zsh/completions
# fpath+=$HOME/.local/share/zsh/completions
# Initialize completion
autoload -Uz compinit
zmodload zsh/complist
compinit -d $HOME/.local/share/zsh/zcompdump-$ZSH_VERSION
# Fun zsh stuff
autoload -U zmv zcalc zargs zed
# github-cli completion
if command -v gh > /dev/null && [ ! -f $HOME/.local/share/zsh/completions/_gh ]; then
gh completion -s zsh > $HOME/.local/share/zsh/completions/_gh
fi
zinit ice blockf as"completion"
zinit snippet $HOME/.local/share/zsh/completions/_gh
# kitten from kitty
if command -v kitty > /dev/null; then
kitty + complete setup zsh | source /dev/stdin
fi
# starship prompt
if command -v starship > /dev/null; then
eval "$(starship init zsh --print-full-init)"
fi
# direnv
if command -v direnv > /dev/null; then
eval "$(direnv hook zsh)"
fi
# zoxide
if command -v zoxide >/dev/null; then
eval "$(zoxide init zsh)"
if command -v ranger >/dev/null; then
if [ ! -f "$HOME/.config/ranger/plugins/ranger_zoxide.py" ]; then
curl -fLo $HOME/.config/ranger/plugins/ranger_zoxide.py https://github.com/ajeetdsouza/zoxide/raw/master/contrib/ranger.py
chmod 755 $HOME/.config/ranger/plugins/ranger_zoxide.py
fi
fi
fi
# poetry
# if [ ! -d $POETRY_HOME ]; then
# curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
# fi
# if [ ! -f $HOME/.local/share/zsh/completions/_poetry ]; then
# poetry completions zsh > $HOME/.local/share/zsh/completions/_poetry
# fi
# zinit ice blockf as"completion"
# zinit snippet $HOME/.local/share/zsh/completions/_poetry
# pyenv
# if [ ! -d $PYENV_ROOT ]; then
# git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT
# git clone https://github.com/pyenv/pyenv-virtualenv.git $PYENV_ROOT/plugins/pyenv-virtualenv
# git clone https://github.com/pyenv/pyenv-update.git $PYENV_ROOT/plugins/pyenv-update
# fi
# eval "$(pyenv init -)"
# eval "$(pyenv virtualenv-init -)"
# nodenv
# if [ ! -d $NODENV_ROOT ]; then
# git clone https://github.com/nodenv/nodenv.git $NODENV_ROOT
# mkdir -p $NODENV_ROOT/plugins
# git clone https://github.com/nodenv/node-build.git $NODENV_ROOT/plugins/node-build
# git clone https://github.com/nodenv/nodenv-env.git $NODENV_ROOT/plugins/nodenv-env
# git clone https://github.com/nodenv/nodenv-man.git $NODENV_ROOT/plugins/nodenv-man
# git clone https://github.com/nodenv/nodenv-aliases.git $NODENV_ROOT/plugins/nodenv-aliases
# git clone https://github.com/nodenv/nodenv-each.git $NODENV_ROOT/plugins/nodenv-each
# git clone https://github.com/nodenv/nodenv-update.git $NODENV_ROOT/plugins/nodenv-update
# git clone https://github.com/nodenv/nodenv-vars.git $NODENV_ROOT/plugins/nodenv-vars
# fi
# eval "$(nodenv init -)"
# autostart gpg-agent
if ! pgrep -u "$USER" gpg-agent >/dev/null; then
gpg-agent --daemon --enable-ssh-support >/dev/null
fi
if [[ -z "$SSH_AUTH_SOCK" ]]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
gpg-connect-agent updatestartuptty /bye >/dev/null
# Additional configurations (shamelessly taken from https://github.com/hlissner/dotfiles)
source $ZDOTDIR/config.zsh
source $ZDOTDIR/completion.zsh
source $ZDOTDIR/keybinds.zsh
source $ZDOTDIR/aliases.zsh
# ______________ _____
# ___ __ \__ /___ ________ ___(_)______________
# __ /_/ /_ /_ / / /_ __ `/_ /__ __ \_ ___/
# _ ____/_ / / /_/ /_ /_/ /_ / _ / / /(__ )
# /_/ /_/ \__,_/ _\__, / /_/ /_/ /_//____/
# /____/
# Some OMZ stuff
zinit wait lucid for \
OMZ::lib/clipboard.zsh \
OMZ::plugins/extract
zinit ice blockf as"completion" for \
OMZ::plugins/docker/_docker \
OMZ::plugins/rust/_rust \
OMZ::plugins/fd/_fd
# fzf key bindings and zsh completions for some commands
# zinit snippet https://github.com/junegunn/fzf/blob/master/shell/key-bindings.zsh
# zinit snippet https://github.com/junegunn/fzf/blob/master/shell/completion.zsh
export FZF_COMPLETION_OPTS='-x'
# https://cht.sh (cheatsheet)
zinit ice mv":cht.sh -> cht.sh" atclone"chmod +x cht.sh" as"program"
zinit snippet https://cht.sh/:cht.sh
# And its completion
zinit ice mv":zsh -> _cht" as"completion"
zinit snippet https://cheat.sh/:zsh
# Better way to pass colors than asci codes (need to be loaded before other plugins)
zinit light zpm-zsh/colors
# fzf as tab-completion (need to be loaded before zsh-autosuggestions and fast-syntax-highlighting)
zinit light Aloxaf/fzf-tab
# Fish-like history suggestion (loaded on demanded for faster startup)
zinit ice wait lucid atload'_zsh_autosuggest_start'
zinit light zsh-users/zsh-autosuggestions
# More completions
zinit wait lucid blockf light-mode for \
zsh-users/zsh-completions \
lukechilds/zsh-better-npm-completion
# zinit light Aloxaf/gencomp
# Syntax
zinit ice wait lucid atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay"
zinit light zdharma/fast-syntax-highlighting
# Fish-like history search
zinit light zsh-users/zsh-history-substring-search
# Autopair plugin from the doomer
zinit light hlissner/zsh-autopair
# Git thingy
zinit light wfxr/forgit
# zinit light kazhala/dotbare
zinit light unixorn/git-extra-commands
# Abbreviations
zinit light olets/zsh-abbr
# zinit light djui/alias-tips
# cd around faster with zlua
# zinit light skywind3000/z.lua
# if command -v ranger >/dev/null; then
# if [ ! -f "$HOME/.config/ranger/plugins/ranger_zlua.py" ]; then
# curl -fLo $HOME/.config/ranger/plugins/ranger_zlua.py https://github.com/skywind3000/z.lua/raw/master/ranger_zlua.py
# chmod 755 $HOME/.config/ranger/plugins/ranger_zlua.py
# fi
# fi
# Plugins' configurations
source $ZDOTDIR/plugins.zsh
# _________ __________
# __ ____/__________________ /___(_)_____________ _
# _ / __ __ ___/ _ \ _ \ __/_ /__ __ \_ __ `/
# / /_/ / _ / / __/ __/ /_ _ / _ / / / /_/ /
# \____/ /_/ \___/\___/\__/ /_/ /_/ /_/_\__, /
# /____/
$HOME/.local/bin/bunny