跳到主要内容

Oh-My-Zsh

2023年03月25日
柏拉文
越努力,越幸运

一、认识


Oh-My-Zsh

二、安装


1. 创建一个名为 install_oh-my-zsh.sh 的脚本

#!/bin/bash

set -e # 遇到错误时停止脚本执行

# 定义变量
CONFIG_FILE="$HOME/.zshrc"
OH_MY_ZSH_INSTALL_URL="https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh"
OH_MY_ZSH_DIR="$HOME/.oh-my-zsh"

# 检查 Oh-My-Zsh 是否已安装
if [ -d "$OH_MY_ZSH_DIR" ]; then
echo "Oh-My-Zsh 已经安装。"
else
echo "安装 Oh-My-Zsh..."
/bin/bash -c "$(curl -fsSL $OH_MY_ZSH_INSTALL_URL)"
fi

# 确保 Oh-My-Zsh 配置存在于 .zshrc
if ! grep -q "export ZSH=\"$OH_MY_ZSH_DIR\"" "$CONFIG_FILE"; then
echo "export ZSH=\"$OH_MY_ZSH_DIR\"" >> "$CONFIG_FILE"
echo "ZSH 环境变量已添加到 $CONFIG_FILE。"
fi

if ! grep -q "ZSH_THEME=" "$CONFIG_FILE"; then
echo 'ZSH_THEME="robbyrussell"' >> "$CONFIG_FILE"
echo "ZSH_THEME 配置已添加到 $CONFIG_FILE。"
fi

if ! grep -q "plugins=(" "$CONFIG_FILE"; then
echo 'plugins=(git)' >> "$CONFIG_FILE"
echo "插件配置已添加到 $CONFIG_FILE。"
fi

# 确保 .zshrc 文件的最后包含以下行
if ! grep -q "source \$ZSH/oh-my-zsh.sh" "$CONFIG_FILE"; then
echo "source \$ZSH/oh-my-zsh.sh" >> "$CONFIG_FILE"
echo "Oh-My-Zsh 启动脚本已添加到 $CONFIG_FILE。"
fi

# 提示重新加载配置文件
echo "要应用更改,请重新加载您的 .zshrc 文件:source $CONFIG_FILE"

echo "脚本执行完成成功!"

# 自动重新加载配置文件(可选)
source "$CONFIG_FILE"

2. 赋予脚本可执行权限

chmod +x install_oh-my-zsh.sh

3. 执行脚本,安装 Docker

./install_oh-my-zsh.sh

三、插件


3.1 oh-my-zsh 增加 git 插件

git: 可以使用各种 git 命令缩写

配置

plugins=(其他的插件 git)

3.2 oh-my-zsh 增加 zsh-autosuggestions 插件

zsh-autosuggestions, 效率神器, 输入命令时,会给出建议的命令(灰色部分)按键盘 → 补全

安装

git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

配置

在 ~/.zshrc 中配置
plugins=(其他的插件 zsh-autosuggestions)

生效

使配置生效
source ~/.zshrc

3.3 oh-my-zsh 增加 zsh-syntax-highlighting 插件

zsh-syntax-highlighting, 平常用的lscd等命令输入正确会绿色高亮显示,输入错误会显示其他的颜色。

安装

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

配置

在 ~/.zshrc 中配置
plugins=(其他的插件 zsh-syntax-highlighting)

生效:

使配置生效
source ~/.zshrc

四、主题


powerlevel10k文档

4.1 安装

1. 创建一个名为 install_oh-my-zsh.sh 的脚本

#!/bin/bash

set -e # 遇到错误时停止脚本执行

# 定义变量
CONFIG_FILE="$HOME/.zshrc"
OH_MY_ZSH_INSTALL_URL="https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh"
OH_MY_ZSH_DIR="$HOME/.oh-my-zsh"
THEME_REPO="https://github.com/romkatv/powerlevel10k.git"
THEME_DIR="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"

# 检查并安装 Oh-My-Zsh
if [ -d "$OH_MY_ZSH_DIR" ]; then
echo "Oh-My-Zsh 已经安装。"
else
echo "安装 Oh-My-Zsh..."
/bin/bash -c "$(curl -fsSL $OH_MY_ZSH_INSTALL_URL)"
fi

# 下载主题
echo "下载主题 powerlevel10k..."
if [ -d "$THEME_DIR" ]; then
echo "Powerlevel10k 主题已经下载。"
else
git clone --depth=1 "$THEME_REPO" "$THEME_DIR"
echo "Powerlevel10k 主题已下载。"
fi

# 确保 .zshrc 配置存在
echo "配置 $CONFIG_FILE..."

# 检查并添加 ZSH 环境变量
if ! grep -q "export ZSH=\"$OH_MY_ZSH_DIR\"" "$CONFIG_FILE"; then
echo "export ZSH=\"$OH_MY_ZSH_DIR\"" >> "$CONFIG_FILE"
echo "ZSH 环境变量已添加到 $CONFIG_FILE。"
fi

# 检查并添加主题配置
if ! grep -q "ZSH_THEME=" "$CONFIG_FILE"; then
echo 'ZSH_THEME="powerlevel10k/powerlevel10k"' >> "$CONFIG_FILE"
echo "ZSH_THEME 配置已添加到 $CONFIG_FILE。"
fi

# 检查并添加插件配置
if ! grep -q "plugins=(" "$CONFIG_FILE"; then
echo 'plugins=(git)' >> "$CONFIG_FILE"
echo "插件配置已添加到 $CONFIG_FILE。"
fi

# 确保 .zshrc 文件的最后包含 oh-my-zsh 启动脚本
if ! grep -q "source \$ZSH/oh-my-zsh.sh" "$CONFIG_FILE"; then
echo "source \$ZSH/oh-my-zsh.sh" >> "$CONFIG_FILE"
echo "Oh-My-Zsh 启动脚本已添加到 $CONFIG_FILE。"
fi

# 提示重新加载配置文件
echo "要应用更改,请重新加载您的 .zshrc 文件:source $CONFIG_FILE"

echo "脚本执行完成成功!"

# 自动重新加载配置文件(可选)
source "$CONFIG_FILE"

2. 赋予脚本可执行权限

chmod +x install_oh-my-zsh.sh

3. 执行脚本,安装 Docker

./install_oh-my-zsh.sh

4.2 主题样式

function getIPV4() {
local ip
ip=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || echo 'No IP')
echo "$ip"
}

function prompt_my_ip() {
local ip
ip=$(getIPV4)
[[ "$ip" != "No IP" ]] && echo -n "%{$fg[208]%}$ip%{$reset_color%}"
}

POWERLEVEL9K_CUSTOM_MY_IP="prompt_my_ip"

COLOR=(
004
006
007
)
COLOR_ARRAY=(
004 067 059
006 073 109
007 249 240
)
THEME_COLOR=1
DEFAULT_BACKGROUND=235
DEFAULT_FOREGROUND="${COLOR[$(( $THEME_COLOR + 1 ))]}"
POWERLEVEL9K_MODE="nerdfont-complete"
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╭─"
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\ue0b0'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╰─%F{${COLOR_ARRAY[$(( $THEME_COLOR * 3 + 2 ))]}}\uf054%F{$DEFAULT_FOREGROUND}\uf054"
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$'\uf054'
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=124
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os-icon dir vcs newline prompt_char)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time custom_my_ip)
PoOWERLEVELarK_VCS_CLEAN_BACKGROUND="green"
POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow"
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=166
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=40
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
POWERLEVEL9K_SHORTEN_DELIMITER='...'
POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=240
POWERLEVEL9K_STATUS_OK_FOREGROUND="green"
POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red"
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HISTORY_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))"
POWERLEVEL9K_VIRTUALENV_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))"
POWERLEVEL9K_VIRTUALENV_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_TIME_FORMAT="%D{%T}"
iPOWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_ROOT_ICON=$'\uF198'
POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SSH_ICON="\uF489"
POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red"
POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow"
POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green"
POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red"
POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow"
POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND"
function prompt_user() {
p10k segment -b $DEFAULT_BACKGROUND -f $DEFAULT_FOREGROUND -i $'\uf2be' +r -t '%n'
}
function prompt_device() {
p10k segment -b "$(( $DEFAULT_BACKGROUND + 2 ))" -f $DEFAULT_FOREGROUND -i $'\uf108' +r -t '%m'
}
DISABLE_AUTO_TITLE=true
precmd(){
echo -en "\033]0; `basename $PWD` \007"
}

4.3 主题字体

  1. 下载字体: 字体网址为 https://www.nerdfonts.com/

    Preview
  2. 选择字体: 个人推荐使用 DejaVuSansM Nerd Font 字体

    Preview
  3. 安装字体

  4. 配置 ZSH 字体:

    Preview

  5. 配置 VsCode 字体: 用户配置 settings.json 中添加如下配置项

    "terminal.integrated.fontFamily": "DejaVuSansM Nerd Font",

五、完整配置


eval $(/opt/homebrew/bin/brew shellenv)


export ZSH=$HOME/.oh-my-zsh
ZSH_THEME="powerlevel10k/powerlevel10k"
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh

function getIPV4() {
local ip
ip=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || echo 'No IP')
echo "$ip"
}

function prompt_my_ip() {
local ip
ip=$(getIPV4)
[[ "$ip" != "No IP" ]] && echo -n "%{$fg[208]%}$ip%{$reset_color%}"
}

POWERLEVEL9K_CUSTOM_MY_IP="prompt_my_ip"

COLOR=(
004
006
007
)
COLOR_ARRAY=(
004 067 059
006 073 109
007 249 240
)
THEME_COLOR=1
DEFAULT_BACKGROUND=235
DEFAULT_FOREGROUND="${COLOR[$(( $THEME_COLOR + 1 ))]}"
POWERLEVEL9K_MODE="nerdfont-complete"
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╭─"
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\ue0b0'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╰─%F{${COLOR_ARRAY[$(( $THEME_COLOR * 3 + 2 ))]}}\uf054%F{$DEFAULT_FOREGROUND}\uf054"
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$'\uf054'
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=124
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os-icon dir vcs newline prompt_char)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time custom_my_ip)
PoOWERLEVELarK_VCS_CLEAN_BACKGROUND="green"
POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow"
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=166
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=40
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
POWERLEVEL9K_SHORTEN_DELIMITER='...'
POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=240
POWERLEVEL9K_STATUS_OK_FOREGROUND="green"
POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red"
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HISTORY_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))"
POWERLEVEL9K_VIRTUALENV_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))"
POWERLEVEL9K_VIRTUALENV_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_TIME_FORMAT="%D{%T}"
iPOWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_ROOT_ICON=$'\uF198'
POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SSH_ICON="\uF489"
POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red"
POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow"
POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green"
POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red"
POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow"
POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND"
function prompt_user() {
p10k segment -b $DEFAULT_BACKGROUND -f $DEFAULT_FOREGROUND -i $'\uf2be' +r -t '%n'
}
function prompt_device() {
p10k segment -b "$(( $DEFAULT_BACKGROUND + 2 ))" -f $DEFAULT_FOREGROUND -i $'\uf108' +r -t '%m'
}
DISABLE_AUTO_TITLE=true
precmd(){
echo -en "\033]0; `basename $PWD` \007"
}



export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"



PATH=$PATH:/usr/local/mysql/bin
alias cdBlog="cd ~/bolawen/blog-docusaurus-webpack"
alias cdResource="cd ~/bolawen/resource/"
alias cdPractice="cd ~/bolawen/practice/"
alias cdScript="cd ~/bolawen/scripts"