MacOS zsh 一键配置脚本

173 阅读2分钟

通过运行如下脚本,可以快捷实现 zsh 一键安装、Powerlevel10k 主题配置和 zsh-autosuggestions、zsh-syntax-highlighting、zsh-completions 等插件配置。

#!/bin/zsh

# Zsh配置脚本 - 一键设置主题和插件
# 适用于macOS和Linux系统

# 定义颜色代码
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # 恢复默认颜色

# 检查Zsh是否安装
check_zsh_installed() {
  if ! command -v zsh &>/dev/null; then
    echo -e "${RED}错误:未找到Zsh。请先安装Zsh后再运行此脚本。${NC}"
    exit 1
  fi
}

# 安装Oh My Zsh
install_oh_my_zsh() {
  if [ ! -d "$HOME/.oh-my-zsh" ]; then
    echo -e "${BLUE}正在安装Oh My Zsh...${NC}"
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
    echo -e "${GREEN}Oh My Zsh安装完成!${NC}"
  else
    echo -e "${YELLOW}Oh My Zsh已安装,跳过安装步骤。${NC}"
  fi
}

# 安装Powerlevel10k主题
install_powerlevel10k() {
  if [ ! -d "$HOME/.oh-my-zsh/custom/themes/powerlevel10k" ]; then
    echo -e "${BLUE}正在安装Powerlevel10k主题...${NC}"
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "$HOME/.oh-my-zsh/custom/themes/powerlevel10k"
    echo -e "${GREEN}Powerlevel10k主题安装完成!${NC}"
  else
    echo -e "${YELLOW}Powerlevel10k主题已安装,跳过安装步骤。${NC}"
  fi
}

# 配置Powerlevel10k
configure_powerlevel10k() {
  echo -e "${BLUE}正在配置Powerlevel10k主题...${NC}"
  sed -i.bak 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/' "$HOME/.zshrc"
  echo -e "${GREEN}Powerlevel10k主题配置完成!${NC}"
  echo -e "${YELLOW}首次启动Zsh时将引导您完成Powerlevel10k的配置。${NC}"
}

# 安装插件
install_plugins() {
  # 创建插件目录
  mkdir -p "$HOME/.oh-my-zsh/custom/plugins"

  # zsh-autosuggestions
  if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
    echo -e "${BLUE}正在安装zsh-autosuggestions插件...${NC}"
    git clone https://github.com/zsh-users/zsh-autosuggestions "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions"
    echo -e "${GREEN}zsh-autosuggestions插件安装完成!${NC}"
  else
    echo -e "${YELLOW}zsh-autosuggestions插件已安装,跳过安装步骤。${NC}"
  fi

  # zsh-syntax-highlighting
  if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
    echo -e "${BLUE}正在安装zsh-syntax-highlighting插件...${NC}"
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting"
    echo -e "${GREEN}zsh-syntax-highlighting插件安装完成!${NC}"
  else
    echo -e "${YELLOW}zsh-syntax-highlighting插件已安装,跳过安装步骤。${NC}"
  fi

  # zsh-completions
  if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-completions" ]; then
    echo -e "${BLUE}正在安装zsh-completions插件...${NC}"
    git clone https://github.com/zsh-users/zsh-completions "$HOME/.oh-my-zsh/custom/plugins/zsh-completions"
    echo -e "${GREEN}zsh-completions插件安装完成!${NC}"
  else
    echo -e "${YELLOW}zsh-completions插件已安装,跳过安装步骤。${NC}"
  fi
}

# 配置插件
configure_plugins() {
  echo -e "${BLUE}正在配置插件...${NC}"

  # 添加插件到.zshrc
  sed -i.bak 's/plugins=(git)/plugins=(git zsh-autosuggestions zsh-syntax-highlighting zsh-completions)/' "$HOME/.zshrc"

  # 启用自动补全
  echo 'autoload -U compinit && compinit' >> "$HOME/.zshrc"

  # 配置别名
  echo 'alias ll="ls -alF"' >> "$HOME/.zshrc"
  echo 'alias la="ls -A"' >> "$HOME/.zshrc"
  echo 'alias l="ls -CF"' >> "$HOME/.zshrc"
  echo 'alias grep="grep --color=auto"' >> "$HOME/.zshrc"

  echo -e "${GREEN}插件配置完成!${NC}"
}

# 配置终端颜色
configure_terminal_colors() {
  echo -e "${BLUE}正在配置终端颜色...${NC}"

  # 启用ls颜色支持
  if [[ "$OSTYPE" == "darwin"* ]]; then
    # macOS
    echo 'export CLICOLOR=1' >> "$HOME/.zshrc"
    echo 'export LSCOLORS=ExFxBxDxCxegedabagacad' >> "$HOME/.zshrc"
  else
    # Linux
    echo 'eval "$(dircolors -b)"' >> "$HOME/.zshrc"
  fi

  echo -e "${GREEN}终端颜色配置完成!${NC}"
}

# 显示配置完成信息
show_complete_message() {
  echo -e "${GREEN}========================================${NC}"
  echo -e "${GREEN}Zsh配置已完成!${NC}"
  echo -e "${GREEN}========================================${NC}"
  echo -e "${YELLOW}请重启终端或运行以下命令使配置生效:${NC}"
  echo -e "${BLUE}source ~/.zshrc${NC}"
  echo -e "${YELLOW}首次启动时,Powerlevel10k将引导您完成主题配置。${NC}"
  echo -e "${YELLOW}您可以通过运行以下命令随时重新配置Powerlevel10k:${NC}"
  echo -e "${BLUE}p10k configure${NC}"
}

# 主函数
main() {
  check_zsh_installed
  install_oh_my_zsh
  install_powerlevel10k
  configure_powerlevel10k
  install_plugins
  configure_plugins
  configure_terminal_colors
  show_complete_message
}

# 执行主函数
main