配置主要优化几个部分:
- 统一PATH 环境变量,其中包括多个路径,可能会导致查找路径变长,从而耗费一定时间。
- 设置一些配置,包括禁止自动更新 Homebrew 软件包、关闭 Python HTTPS 证书验证等。
- 封装各个组件,对加载比较慢的组件使用懒加载的方式加载,主要针对nvm的懒加载,nvm直接加载终端启动非常耗时
zshrc配置如下:
# 约束 PATH 环境变量
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:"
# 设置 JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home)
# 设置一些配置
function _set_common_config {
source "$HOME/.oh-my-zsh/oh-my-zsh.sh"
export HOMEBREW_NO_AUTO_UPDATE=true
export PYTHONHTTPSVERIFY=0
}
# 设置多个 JDK 版本 设置 jenv
function _set_jdk_version_and_jenv {
export PATH="/usr/local/opt/openjdk@8/bin:/usr/local/opt/openjdk@17/bin:/usr/local/opt/openjdk/bin:$PATH"
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
}
# 加载 Maven 环境变量
_setup_maven() {
export MAVEN_HOME="/usr/local/Cellar/maven/3.9.2"
export PATH="$MAVEN_HOME/bin:$PATH"
}
# 设置默认用户和 Homebrew 镜像源
function _set_default_user_brew_domain {
export DEFAULT_USER="$(whoami)"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/"
}
# 设置主题和插件
function _set_zsh_theme_plugins {
ZSH_THEME="af-magic"
plugins=(git fzf autojump zsh-autosuggestions zsh-syntax-highlighting web-search git-open)
source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=6'
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
}
# 设置自动跳转目录
function _set_autojump {
[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
}
# 设置 web-search
function _set_web_search {
ZSH_WEB_SEARCH_ENGINES=(
gg "https://www.google.com/search?q="
bd "https://www.baidu.com/s?wd="
gh "https://github.com/search?q="
)
}
# 加载 Docker 相关脚本
function _load_docker_scripts {
source "$HOME/.docker/init-zsh.sh" || true
}
# 加载 starship
_setup_starship() {
eval "$(starship init zsh)"
}
# 设置 Node.js 环境变量
_setup_node() {
export PATH="/usr/local/opt/node@18/bin:$PATH"
}
# 开始同步加载============================================================
_sync() {
_set_autojump
_setup_starship
_set_common_config
_set_zsh_theme_plugins
_setup_maven
_load_docker_scripts
_set_web_search
_set_default_user_brew_domain
_set_jdk_version_and_jenv
}
[[ "$PS1" ]] && _sync
# 同步加载结束============================================================
# 开始懒加载设置=========================================================
_setup_nvm() {
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && \. "/usr/local/opt/nvm/nvm.sh"
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/usr/local/opt/nvm/etc/bash_completion.d/nvm"
}
nvm() {
command nvm "$@" || {
echo "nvm命令不存在, 正在自动加载nvm相关配置"
echo "加载完成,正在执行nvm "$@""
echo "\n"
_setup_nvm
nvm "$@"
}
}
npm() {
command npm "$@" || {
echo "npm命令不存在, 正在自动加载npm相关配置"
echo "加载完成,正在执行npm "$@""
echo "\n"
_setup_nvm
npm "$@"
}
}
# 设置自定义别名
function _set_aliases {
alias idea='/Users/kuangbendewoniu/Documents/idea-mac/macjihuo2022/mac.sh | pbcopy'
alias wx='nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1 &'
}
# 获取idea破解链接
idea() {
command idea "$@" || {
echo "idea命令不存在, 正在自动加载idea相关配置"
echo "加载完成,idea破解链接已经加入剪切板"
_set_aliases
$(idea)
}
}
# 打开微信登录界面,用于微信多开
wx() {
command wx "$@" || {
echo "wx命令不存在, 正在自动加载wx相关配置"
echo "加载完成, 正在打开微信登录界面"
_set_aliases
$(wx)
}
}
# 懒加载设置结束=========================================================