HISTFILE="$HOME/.zsh_history" HISTSIZE=10000 SAVEHIST=10000 bindkey -v KEYTIMEOUT=1 setopt APPEND_HISTORY setopt SHARE_HISTORY setopt PROMPT_SUBST autoload -U compinit compinit source <(fzf --zsh) if [[ -f /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh fi if [[ -f /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]]; then source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh fi if [[ -f ~/.zsh/plugins/fzf-tab/fzf-tab.plugin.zsh ]]; then source ~/.zsh/plugins/fzf-tab/fzf-tab.plugin.zsh fi if [[ -f ~/.zsh/plugins/fzf-tab-completion/zsh/fzf-tab-completion.plugin.zsh ]]; then source ~/.zsh/plugins/fzf-tab-completion/zsh/fzf-tab-completion.plugin.zsh fi typeset -A ZSH_HIGHLIGHT_STYLES ZSH_HIGHLIGHT_STYLES[default]='fg=#eceff4' ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#bf616a' ZSH_HIGHLIGHT_STYLES[command]='fg=#88c0d0' ZSH_HIGHLIGHT_STYLES[builtin]='fg=#88c0d0' ZSH_HIGHLIGHT_STYLES[alias]='fg=#8fbcbb' ZSH_HIGHLIGHT_STYLES[function]='fg=#88c0d0' ZSH_HIGHLIGHT_STYLES[precommand]='fg=#81a1c1,bold' ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#81a1c1' ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=#d08770' ZSH_HIGHLIGHT_STYLES[path]='fg=#eceff4,underline' ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=#eceff4,underline' ZSH_HIGHLIGHT_STYLES[optstring]='fg=#ebcb8b' ZSH_HIGHLIGHT_STYLES[argument-base]='fg=#eceff4' ZSH_HIGHLIGHT_STYLES[dollar-parameter]='fg=#b48ead' ZSH_HIGHLIGHT_STYLES[dollar-parameter_extension]='fg=#b48ead' ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#a3be8c' ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#a3be8c' ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=#a3be8c' ZSH_HIGHLIGHT_STYLES[comment]='fg=#4c566a,italic' ZSH_HIGHLIGHT_STYLES[globbing]='fg=#ebcb8b' ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=#d08770' zstyle ':fzf-tab:*' fzf-flags \ --color=fg:#eceff4,bg:#2e3440,fg+:#eceff4,bg+:#3b4252 \ --color=hl:#88c0d0,hl+:#88c0d0,info:#b48ead,prompt:#81a1c1 \ --color=pointer:#88c0d0,marker:#a3be8c,spinner:#88c0d0,header:#5e81ac \ --color=border:#4c566a,label:#8fbcbb,query:#eceff4 \ --color=preview-fg:#eceff4,preview-bg:#2e3440,preview-border:#4c566a,preview-label:#8fbcbb \ --color=gutter:#3b4252,separator:#434c5e,scrollbar:#5e81ac,preview-scrollbar:#5e81ac \ --color=disabled:#4c566a \ --prompt='❯ ' export FZF_DEFAULT_OPTS=" --color=fg:#eceff4,bg:#2e3440,fg+:#eceff4,bg+:#3b4252 --color=hl:#88c0d0,hl+:#88c0d0,info:#b48ead,prompt:#81a1c1 --color=pointer:#88c0d0,marker:#a3be8c,spinner:#88c0d0,header:#5e81ac --color=border:#4c566a,label:#8fbcbb,query:#eceff4 --color=preview-fg:#eceff4,preview-bg:#2e3440,preview-border:#4c566a,preview-label:#8fbcbb --color=gutter:#3b4252,separator:#434c5e,scrollbar:#5e81ac,preview-scrollbar:#5e81ac --color=disabled:#4c566a --prompt='❯ ' " prompt_symbol() { if [[ "$KEYMAP" == "vicmd" ]]; then print -r -- "%F{#ebcb8b}❮%f" else print -r -- "%F{#88c0d0}❯%f" fi } update_vim_prompt() { zle reset-prompt } zle-keymap-select() { update_vim_prompt } zle-line-init() { zle -K viins update_vim_prompt } git_prompt_info() { local branch local staged local modified local untracked local deleted local conflicts local git_state="" branch=$(git branch --show-current 2>/dev/null) if [[ -z "$branch" ]]; then return fi staged=$(git diff --cached --name-only 2>/dev/null | wc -l | tr -d ' ') modified=$(git diff --name-only 2>/dev/null | wc -l | tr -d ' ') untracked=$(git ls-files --others --exclude-standard 2>/dev/null | wc -l | tr -d ' ') deleted=$(git diff --name-only --diff-filter=D 2>/dev/null | wc -l | tr -d ' ') conflicts=$(git diff --name-only --diff-filter=U 2>/dev/null | wc -l | tr -d ' ') if (( staged > 0 )); then git_state+=" %F{#b48ead} ${staged}%f" fi if (( modified > 0 )); then git_state+=" %F{#ebcb8b} ${modified}%f" fi if (( untracked > 0 )); then git_state+=" %F{#a3be8c} ${untracked}%f" fi if (( deleted > 0 )); then git_state+=" %F{#d08770} ${deleted}%f" fi if (( conflicts > 0 )); then git_state+=" %F{#bf616a}󱈸 ${conflicts}%f" fi if [[ -n "$git_state" ]]; then git_state=" %F{#88c0d0}❯%f${git_state}" fi print -r -- " %F{#88c0d0}❯%f %F{#8fbcbb}󰘬 ${branch}%f${git_state}" } precmd() { local exit_code=$? if (( exit_code != 0 )); then PROMPT_EXIT="%F{#941703}✗${exit_code}%f " else PROMPT_EXIT="" fi } nvim() { printf '\033]0;nvim\007' command nvim "$@" printf '\033]0;foot\007' } zle -N zle-keymap-select zle -N zle-line-init PROMPT='%F{#eceff4}%~%f$(git_prompt_info) $(prompt_symbol) ' vi() { nvim "$@"; } vim() { nvim "$@"; } alias rmpc='printf "\033]0;rmpc\007"; command rmpc; printf "\033]0;foot\007"'