#extend path path=(~/bin $path) path=(~/.local/bin $path) # 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 # Set ZINIT Home ZINIT_HOME="${HOME}/.config/zinit/zinit.git" # Download ZINIT if [ ! -f "${ZINIT_HOME}/zinit.zsh" ]; then mkdir -p "$(dirname $ZINIT_HOME)" git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" fi # Load Zinit source "${ZINIT_HOME}/zinit.zsh" # add zinit # Powerlevel10k prompt theme (replaces oh-my-posh; instant prompt = fast startup) zinit ice depth=1 zinit light romkatv/powerlevel10k zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-completions zinit light zsh-users/zsh-autosuggestions zinit ice depth=1 zinit light jeffreytse/zsh-vi-mode # user-local completions. Generated (not repo-tracked) completion scripts land # in ~/.zfunc; lk-installers/install-apps writes them. Currently: _erd. # Regenerate by hand with: erd --completions zsh > ~/.zfunc/_erd fpath=(~/.zfunc $fpath) # Load completions autoload -U compinit && compinit zinit cdreplay -q # keybindings bindkey -e bindkey '^p' history-search-backward bindkey '^n' history-search-forward bindkey '^[[A' history-beginning-search-backward bindkey '^[[B' history-beginning-search-forward bindkey '\e[A' history-beginning-search-backward bindkey '\e[B' history-beginning-search-forward # History HISTSIZE=5000 HISTFILE=~/.zsh_history SAVEHIST=$HISTSIZE HISTDUP=erase setopt appendhistory setopt sharehistory setopt hist_ignore_space setopt hist_ignore_all_dups setopt hist_save_no_dups setopt hist_ignore_dups setopt hist_find_no_dups setopt hist_verify # allow inline `#` comments at the interactive prompt (paste-friendly; # matches non-interactive/script behavior so pasted commands don't fail) setopt interactive_comments # completion styling zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' menu no zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath' zstyle ':fzf-tab:*' fzf-command ftb-tmux-popup # aliases alias cat='bat' # erdtree — parallel directory walker; benchmarked 1.8x faster than GNU tree # and 6.8x faster than `eza --tree` over 658k entries. Config (which makes its # du-tool defaults behave like tree) lives in ~/.config/erdtree/.erdtree.toml. alias tree='erd' # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh export FZF_DEFAULT_COMMAND="fd --hidden --strip-cwd-prefix --exclude .git" export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" _fzf_compgen_path() { fd --hidden --exclude .git . "$1" } _fzf_compgen_dir() { fd --type=d --hidden --exclude .git . "$1" } source ~/fzf-git.sh/fzf-git.sh export FZF_CTRL_T_OPTS="--preview 'bat -n --color=always --line-range :500 {}'" export FZF_ALT_C_OPTS="--preview 'ls -la {} | head -200'" _fzf_comprun() { local command=$1 shift case "$command" in cd) fzf --preview 'ls -la {} | head -200' "$@" ;; export|unset) fzf --preview "eval 'echo \$' {}" "$@" ;; ssh) fzf --preview 'dig {}' "$@" ;; *) fzf --preview 'bat -n --color=always --line-range :500 {}' "$@" ;; esac } export BAT_THEME=Nord eval "$(zoxide init zsh)" alias cd='z' zinit light Aloxaf/fzf-tab # zsh-autosuggestions is already loaded via zinit above; on Linux, also wire # the terminfo arrow keys to history search. if [[ $(uname) == "Linux" ]]; then bindkey "${terminfo[kcuu1]}" history-search-backward bindkey "${terminfo[kcud1]}" history-search-forward fi export STM32_PRG_PATH=/Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer/STM32CubeProgrammer.app/Contents/MacOs/bin # bun (only if installed) if [ -d "$HOME/.bun" ]; then export BUN_INSTALL="$HOME/.bun" export PATH="$BUN_INSTALL/bin:$PATH" [ -s "$BUN_INSTALL/_bun" ] && source "$BUN_INSTALL/_bun" fi # grok (only if installed; avoids a second compinit when absent) if [ -d "$HOME/.grok" ]; then export PATH="$HOME/.grok/bin:$PATH" fpath=(~/.grok/completions/zsh $fpath) autoload -Uz compinit && compinit -C fi # dotnet export DOTNET_ROOT="$HOME/.dotnet" export PATH="$DOTNET_ROOT:$PATH" # kimi-code (only if installed) if [ -d "$HOME/.kimi-code" ]; then export PATH="$HOME/.kimi-code/bin:$PATH" fi