My personal .zshrc
configuration file.
# =====================================
# Basic Configuration
# =====================================
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set the theme for oh-my-zsh.
ZSH_THEME="robbyrussell"
# Set the format for command history timestamps.
HIST_STAMPS="yyyy-mm-dd"
# List of plugins to load.
plugins=(git node npm nvm ng vscode)
# Source oh-my-zsh.
source $ZSH/oh-my-zsh.sh
# =====================================
# Aliases
# =====================================
# Set personal aliases.
alias nglf='ng lint --fix'
alias ngs='ng s'
alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'
# =====================================
# Autocompletion
# =====================================
# Load Git autocompletion.
zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
# Include additional directories in the function path.
fpath=(~/.zsh $fpath)
# Initialize autocompletion.
autoload -Uz compinit && compinit
# Load Angular CLI autocompletion.
source <(ng completion script)
# =====================================
# NVM (Node Version Manager) Configuration
# =====================================
# Set up NVM directory.
export NVM_DIR="$HOME/.nvm"
# Load NVM and its bash_completion.
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# Function to load .nvmrc and update node version in projects.
autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
# Hook to load NVM when changing directories.
add-zsh-hook chpwd load-nvmrc
load-nvmrc