Initial dotfiles: portable shell configs, Brewfile, and setup guide
Cleaned up for new machine portability: removed hardcoded paths, EOL packages, and redundant version managers. Consolidated NVM loading, added work git identity support via includeIf. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
169
zshrc
Normal file
169
zshrc
Normal file
@@ -0,0 +1,169 @@
|
||||
# Path to your oh-my-zsh configuration.
|
||||
ZSH=$HOME/.oh-my-zsh
|
||||
|
||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
||||
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 name of the theme to load.
|
||||
# Look in ~/.oh-my-zsh/themes/
|
||||
# Optionally, if you set this to "random", it'll load a random theme each
|
||||
# time that oh-my-zsh is loaded.
|
||||
ZSH_THEME="powerlevel10k/powerlevel10k"
|
||||
|
||||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||
|
||||
# Powerlevel10k Configuration
|
||||
# Uncomment the following line if you want to disable marking untracked files under VCS as dirty
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Powerlevel10k Settings
|
||||
POWERLEVEL9K_MODE="nerdfont-complete"
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon dir vcs)
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status command_execution_time background_jobs time)
|
||||
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
|
||||
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""
|
||||
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="$ "
|
||||
|
||||
# History Configuration
|
||||
HISTSIZE=10000 # Maximum events in internal history
|
||||
SAVEHIST=10000 # Maximum events in history file
|
||||
HIST_STAMPS="yyyy-mm-dd" # Add timestamps to history
|
||||
setopt HIST_IGNORE_DUPS # Don't record duplicated commands
|
||||
setopt HIST_FIND_NO_DUPS # Don't display duplicates when searching
|
||||
setopt HIST_REDUCE_BLANKS # Remove unnecessary blanks
|
||||
setopt INC_APPEND_HISTORY # Add commands to history immediately
|
||||
setopt EXTENDED_HISTORY # Record command start time and duration
|
||||
|
||||
# Directory Navigation
|
||||
setopt AUTO_CD # Change directories without typing cd
|
||||
setopt AUTO_PUSHD # Push directories to the stack automatically
|
||||
setopt PUSHD_IGNORE_DUPS # Don't push duplicate directories
|
||||
setopt PUSHD_MINUS # Reverse meaning of +/- when navigating stack
|
||||
DIRSTACKSIZE=10 # Limit directory stack size
|
||||
|
||||
# Command Line Editing
|
||||
setopt INTERACTIVE_COMMENTS # Allow comments in interactive shell
|
||||
setopt NO_BEEP # Disable beeping
|
||||
setopt COMPLETE_IN_WORD # Allow completion from within a word
|
||||
setopt ALWAYS_TO_END # Move cursor to end of word after completion
|
||||
|
||||
# Key bindings
|
||||
bindkey "^[[1;5C" forward-word # Ctrl + Right
|
||||
bindkey "^[[1;5D" backward-word # Ctrl + Left
|
||||
bindkey '^[[H' beginning-of-line # Home
|
||||
bindkey '^[[F' end-of-line # End
|
||||
bindkey '^[[3~' delete-char # Delete
|
||||
bindkey '^?' backward-delete-char # Backspace
|
||||
bindkey '^[[A' history-beginning-search-backward # Up arrow
|
||||
bindkey '^[[B' history-beginning-search-forward # Down arrow
|
||||
|
||||
# Example aliases
|
||||
alias zshconfig="cursor ~/.zshrc"
|
||||
alias ohmyzsh="cursor ~/.oh-my-zsh"
|
||||
|
||||
# alias python=/usr/local/bin/python3
|
||||
# alias pip=/usr/local/bin/pip3
|
||||
|
||||
# Set to this to use case-sensitive completion
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Comment this out to disable weekly auto-update checks
|
||||
# DISABLE_AUTO_UPDATE="true"
|
||||
|
||||
# Uncomment following line if you want to disable colors in ls
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment following line if you want to disable autosetting terminal title.
|
||||
DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment following line if you want red dots to be displayed while waiting for completion
|
||||
COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
||||
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
||||
plugins=(
|
||||
copyfile
|
||||
docker
|
||||
extract
|
||||
fzf
|
||||
git
|
||||
git-auto-fetch
|
||||
jira
|
||||
nvm
|
||||
vscode
|
||||
web-search
|
||||
z
|
||||
zsh-autosuggestions
|
||||
zsh-syntax-highlighting # Must be last in the list!
|
||||
)
|
||||
|
||||
# Plugin Configurations
|
||||
# FZF
|
||||
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border --preview 'bat --style=numbers --color=always --line-range :500 {}'"
|
||||
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
|
||||
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
||||
|
||||
# ZSH Autosuggestions
|
||||
export ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
||||
export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
|
||||
export ZSH_AUTOSUGGEST_USE_ASYNC=true
|
||||
bindkey '^ ' autosuggest-accept # Ctrl + Space to accept suggestion
|
||||
|
||||
# ZSH Syntax Highlighting
|
||||
export ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor)
|
||||
export ZSH_HIGHLIGHT_PATTERNS=('rm -rf *' 'fg=white,bold,bg=red')
|
||||
|
||||
# Auto-switch Node version when entering a directory with .nvmrc
|
||||
NVM_AUTOLOAD=1
|
||||
|
||||
# SSH Agent configuration from Genehack
|
||||
zstyle :omz:plugins:ssh-agent agent-forwarding on
|
||||
|
||||
# Load Oh My Zsh
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
# Suppress NVM output for Powerlevel10k instant prompt
|
||||
export NVM_QUIET=1
|
||||
typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
|
||||
|
||||
# Python environment - virtualenv-init (interactive only, base pyenv init is in .zshenv)
|
||||
if command -v pyenv 1>/dev/null 2>&1; then
|
||||
eval "$(pyenv virtualenv-init -)"
|
||||
fi
|
||||
|
||||
# Docker
|
||||
source $HOME/.docker/init-zsh.sh || true
|
||||
|
||||
# iTerm2 integration
|
||||
test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
|
||||
|
||||
# Utility functions
|
||||
listening() {
|
||||
if [ $# -eq 0 ]; then
|
||||
sudo lsof -iTCP -sTCP:LISTEN -n -P
|
||||
elif [ $# -eq 1 ]; then
|
||||
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1
|
||||
else
|
||||
echo "Usage: listening [pattern]"
|
||||
fi
|
||||
}
|
||||
|
||||
# Aliases
|
||||
alias ls='lsd'
|
||||
alias weather='curl wttr.in/Athens'
|
||||
alias mkdir='mkdir -p' # Create parent directories automatically
|
||||
alias h='history'
|
||||
alias path='echo -e ${PATH//:/\\n}' # Pretty print PATH
|
||||
alias now='date +"%T"'
|
||||
alias nowdate='date +"%d-%m-%Y"'
|
||||
|
||||
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
|
||||
|
||||
# The following lines have been added by Docker Desktop to enable Docker CLI completions.
|
||||
fpath=($HOME/.docker/completions $fpath)
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
# End of Docker CLI completions
|
||||
Reference in New Issue
Block a user