130 lines
2.9 KiB
Bash
130 lines
2.9 KiB
Bash
# ================================
|
|
# zsh configuration
|
|
# ================================
|
|
|
|
# ================================
|
|
# Plugin Management (Zinit)
|
|
# ================================
|
|
|
|
# Initialize Zinit
|
|
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
|
|
if [ ! -d "$ZINIT_HOME" ]; then
|
|
mkdir -p "$(dirname $ZINIT_HOME)"
|
|
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
|
|
fi
|
|
source "${ZINIT_HOME}/zinit.zsh"
|
|
|
|
# Load plugins
|
|
# Arch Linux standard plugins (prefer pacman versions when available)
|
|
# pacman -S zsh-syntax-highlighting zsh-autosuggestions
|
|
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
|
|
else
|
|
zinit light zsh-users/zsh-syntax-highlighting
|
|
fi
|
|
|
|
if [[ -f /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then
|
|
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
|
|
else
|
|
zinit light zsh-users/zsh-autosuggestions
|
|
fi
|
|
|
|
# Additional useful plugins
|
|
zinit light zsh-users/zsh-completions
|
|
zinit light Aloxaf/fzf-tab
|
|
|
|
# Note: Removed dependency on syui---powerline.zsh plugin
|
|
# Powerline functionality is now integrated directly above
|
|
|
|
# Load completions
|
|
autoload -U compinit && compinit
|
|
|
|
# Plugin configurations
|
|
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
|
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#666666"
|
|
|
|
# History
|
|
HISTFILE=~/.zsh_history
|
|
HISTSIZE=10000
|
|
SAVEHIST=10000
|
|
setopt HIST_IGNORE_DUPS
|
|
setopt HIST_IGNORE_ALL_DUPS
|
|
setopt HIST_IGNORE_SPACE
|
|
setopt HIST_FIND_NO_DUPS
|
|
setopt HIST_REDUCE_BLANKS
|
|
setopt SHARE_HISTORY
|
|
|
|
# Directory navigation
|
|
setopt AUTO_CD
|
|
setopt AUTO_PUSHD
|
|
setopt PUSHD_IGNORE_DUPS
|
|
|
|
# Completion
|
|
autoload -Uz compinit
|
|
compinit
|
|
setopt AUTO_MENU
|
|
setopt COMPLETE_ALIASES
|
|
|
|
# Key bindings
|
|
bindkey -e
|
|
bindkey '^R' history-incremental-search-backward
|
|
|
|
# ================================
|
|
# Airline.zsh Plugin
|
|
# ================================
|
|
|
|
# Load airline.zsh plugin via zinit
|
|
zinit load syui/airline.zsh
|
|
|
|
# Aliases
|
|
alias ll='ls -la'
|
|
alias la='ls -a'
|
|
alias l='ls -CF'
|
|
alias grep='grep --color=auto'
|
|
alias ..='cd ..'
|
|
alias ...='cd ../..'
|
|
|
|
# Git aliases
|
|
alias g='git'
|
|
alias gs='git status'
|
|
alias ga='git add'
|
|
alias gc='git commit'
|
|
alias gp='git push'
|
|
alias gl='git log --oneline'
|
|
alias gd='git diff'
|
|
|
|
# Tmux aliases
|
|
alias t='tmux'
|
|
alias ta='tmux attach'
|
|
alias tl='tmux list-sessions'
|
|
|
|
# Functions
|
|
mkcd() {
|
|
mkdir -p "$1" && cd "$1"
|
|
}
|
|
|
|
# Load local zshrc if exists
|
|
[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local
|
|
|
|
# Environment variables
|
|
export EDITOR=nvim
|
|
export VISUAL=nvim
|
|
export PAGER=less
|
|
export LESS='-R'
|
|
|
|
# Path additions
|
|
export PATH="$PATH:$HOME/.local/bin"
|
|
export PATH="$PATH:$HOME/bin"
|
|
export PATH="/usr/local/sbin:$PATH"
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
|
|
case $OSTYPE in
|
|
darwin*)
|
|
export PATH="/opt/homebrew/bin:$PATH"
|
|
export PATH="/opt/homebrew/sbin:$PATH"
|
|
;;
|
|
linux*)
|
|
;;
|
|
esac
|
|
|