dotfiles/zshrc

134 lines
4.8 KiB
Bash

# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# zplug
source ~/.zplug/init.zsh
zplug "zplug/zplug", hook-build:"zplug --self-manage"
zplug "romkatv/powerlevel10k", as:theme, depth:1
#zplug "popstas/zsh-command-time"
zplug "zsh-users/zsh-syntax-highlighting", defer:2
zplug "ytakahashi/igit"
if [[ -n "${TMUX}" ]]; then
zplug "mbenford/zsh-tmux-auto-title"
fi
#zplug "MichaelAquilina/zsh-you-should-use"
zplug "junegunn/fzf", from:github, as:command, rename-to:fzf, hook-build:"./install --all"
zplug "junegunn/fzf", use:"shell/*.zsh", defer:2
zplug "Aloxaf/fzf-tab", from:github
zplug "alexiszamanidis/zsh-git-fzf"
#zplug "ddnexus/fm", hook-build:"./fm__compile"
zplug "larkery/zsh-histdb"
#zplug "m42e/zsh-histdb-fzf"
zplug 'm42e/zsh-histdb-skim', from:github, at:main
zplug load
# zsh options
autoload run-help
setopt auto_pushd
setopt clobber
setopt complete_aliases
setopt correct
#setopt correct_all
setopt extended_glob
setopt extended_history
setopt hash_list_all
setopt hist_ignore_all_dups
setopt hist_ignore_space
setopt no_beep
setopt no_hist_allow_clobber
setopt no_rm_star_silent
setopt notify
setopt prompt_subst
setopt pushd_ignore_dups
setopt pushd_silent
setopt pushd_to_home
setopt rm_star_wait
export SAVEHIST=1000000
export HISTSIZE=1000000
export HISTFILE=~/.zsh_history
setopt append_history
setopt share_history
# zsh plugin options
#ZSH_COMMAND_TIME_MIN_SECONDS=10
if [[ -n "${TMUX}" ]]; then
ZSH_TMUX_AUTO_TITLE_SHORT=true
ZSH_TMUX_AUTO_TITLE_IDLE_TEXT="%last"
fi
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'exa -1 --color=always $realpath'
# misc / general
export EDITOR="nano"
export PAGER="most"
export PATH=~/.local/bin:${PATH}
# asdf
. $HOME/.asdf/asdf.sh
# aliases (before interactive, just in case)
alias ls="exa"
# dont allow mosh prediction (override in zshrc.local)
export MOSH_PREDICTION_DISPLAY="never"
# local overrides
test -f ~/.zshrc.local && source ~/.zshrc.local
# dont do anything more if non interactive
if [[ ! -o interactive ]]; then
return
fi
# setup mode/status line for zsh
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
# ensure histdb gets ctrl-r for history
if grep -q "Android" <<< `uname -a`; then
source ~/.zplug/repos/larkery/zsh-histdb/histdb-interactive.zsh
bindkey '^R' _histdb-isearch
else
bindkey '^R' histdb-skim-widget
fi
# Fix home/end/del silly
if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M emacs "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M vicmd "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
[[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
[[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
[[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char
# ncurses fogyatekos
[[ "$terminfo[kcuu1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
[[ "$terminfo[kcud1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
[[ "$terminfo[kcuf1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
[[ "$terminfo[kcub1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
[[ "$terminfo[khome]" == "^[O"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "^[O"* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
[[ "$terminfo[khome]" == "^[O"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "^[O"* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
fi