Files
2026-08-11 19:39:03 +04:00

164 lines
4.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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"'