Files
dotfiles/.zshrc
2025-06-11 07:53:02 +09:00

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