feat: 完成 Zsh 插件配置脚本的优化和测试 - 修复 autojump 配置冲突 - 清理重复的插件安装 - 优化脚本结构和注释 feat: 优化shell脚本 - 1. 增强错误处理和恢复机制 2. 添加网络连接优化和镜像源支持 3. 改进进度显示和用户交互 4. 优化配置文件管理和备份 5. 改进插件管理机制 6. 增强依赖检查和安装 7. 添加完整的日志记录功能 8. 修复字体安装相关问题 docs: 完善shell、system和utils部分的README文档 - 1. 添加详细的脚本说明和使用方法 2. 补充依赖要求和注意事项 3. 添加常见问题解答 4. 更新版本日志 feat(editor): 优化 neovim 和 nvchad 安装脚本,添加性能优化配置和详细文档 feat: 优化Python开发环境安装脚本,分离基础包和机器学习包,修复virtualenvwrapper配置 feat: 优化开发工具安装脚本,统一使用common.sh中的函数,改进错误处理 fix: 修复DNMP安装脚本,跳过自动配置PHP开发环境 fix: 提交删除的 init.sh 和 mysql.sh 文件
215 lines
5.6 KiB
Bash
215 lines
5.6 KiB
Bash
#!/bin/bash
|
||
|
||
# 导入公共函数
|
||
source "$(dirname "$0")/../utils/common.sh"
|
||
|
||
# 安装 Oh My Zsh
|
||
install_oh_my_zsh() {
|
||
show_progress "安装 Oh My Zsh"
|
||
|
||
# 删除已存在的 Oh My Zsh 目录
|
||
if [ -d "${USER_HOME}/.oh-my-zsh" ]; then
|
||
if confirm "检测到已存在的 Oh My Zsh 安装,是否重新安装?"; then
|
||
log_info "删除已存在的 Oh My Zsh 目录..."
|
||
rm -rf ${USER_HOME}/.oh-my-zsh
|
||
else
|
||
update_progress "安装 Oh My Zsh" "已跳过"
|
||
return 0
|
||
fi
|
||
fi
|
||
|
||
# 获取安装脚本URL(可能使用镜像)
|
||
local install_url="https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh"
|
||
local mirror_url=$(get_mirror_url "$install_url" "omz")
|
||
|
||
# 安装 Oh My Zsh
|
||
su - $CURRENT_USER -c "curl -fsSL $mirror_url | sh -s -- --unattended"
|
||
|
||
# 设置 zsh 为默认 shell
|
||
show_progress "设置 zsh 为默认 shell"
|
||
chsh -s $(which zsh) $CURRENT_USER
|
||
update_progress "设置 zsh 为默认 shell" "完成"
|
||
}
|
||
|
||
# 安装主题和字体
|
||
install_theme_and_fonts() {
|
||
show_progress "安装 Powerlevel10k 主题"
|
||
|
||
local theme_url="https://github.com/romkatv/powerlevel10k.git"
|
||
local theme_dir="${USER_HOME}/.oh-my-zsh/custom/themes/powerlevel10k"
|
||
|
||
manage_plugin "powerlevel10k" "$theme_dir" "$theme_url"
|
||
|
||
# 安装 MesloLGS NF 字体
|
||
local font_urls=(
|
||
"https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf"
|
||
"https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf"
|
||
"https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf"
|
||
"https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf"
|
||
)
|
||
|
||
show_progress "安装字体"
|
||
for url in "${font_urls[@]}"; do
|
||
local font_name=$(basename "$url" | sed 's/%20/ /g')
|
||
install_font "$url" "$font_name"
|
||
done
|
||
update_progress "安装字体" "完成"
|
||
}
|
||
|
||
# 安装基础插件
|
||
install_base_plugins() {
|
||
show_progress "安装基础插件"
|
||
local plugins_dir="${USER_HOME}/.oh-my-zsh/custom/plugins"
|
||
|
||
# 定义插件
|
||
local plugins=(
|
||
"zsh-autosuggestions:https://github.com/zsh-users/zsh-autosuggestions"
|
||
"zsh-syntax-highlighting:https://github.com/zsh-users/zsh-syntax-highlighting.git"
|
||
)
|
||
|
||
# 安装每个插件
|
||
for plugin in "${plugins[@]}"; do
|
||
local name="${plugin%%:*}"
|
||
local url="${plugin#*:}"
|
||
manage_plugin "$name" "${plugins_dir}/${name}" "$url"
|
||
done
|
||
|
||
update_progress "安装基础插件" "完成"
|
||
}
|
||
|
||
# 配置 Zsh
|
||
configure_zsh() {
|
||
show_progress "配置 Zsh"
|
||
|
||
# 备份现有配置
|
||
manage_config "backup" "${USER_HOME}/.zshrc"
|
||
|
||
# 创建新的配置文件
|
||
cat > ${USER_HOME}/.zshrc << 'EOL'
|
||
# Enable Powerlevel10k instant prompt
|
||
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
|
||
|
||
# Path to oh-my-zsh installation
|
||
export ZSH="$HOME/.oh-my-zsh"
|
||
|
||
# Theme
|
||
ZSH_THEME="powerlevel10k/powerlevel10k"
|
||
|
||
# Plugins
|
||
plugins=(
|
||
git
|
||
docker
|
||
docker-compose
|
||
npm
|
||
node
|
||
python
|
||
pip
|
||
zsh-autosuggestions
|
||
zsh-syntax-highlighting
|
||
)
|
||
|
||
# Source oh-my-zsh
|
||
source $ZSH/oh-my-zsh.sh
|
||
|
||
# User configuration
|
||
export LANG=en_US.UTF-8
|
||
|
||
# 设置自动补全快捷键为逗号
|
||
bindkey ',' autosuggest-accept
|
||
|
||
# 历史记录配置
|
||
HISTSIZE=10000
|
||
SAVEHIST=10000
|
||
HISTFILE=~/.zsh_history
|
||
setopt SHARE_HISTORY
|
||
setopt HIST_IGNORE_ALL_DUPS
|
||
setopt HIST_REDUCE_BLANKS
|
||
|
||
# 目录栈配置
|
||
setopt AUTO_PUSHD
|
||
setopt PUSHD_IGNORE_DUPS
|
||
setopt PUSHD_SILENT
|
||
|
||
# 自动补全配置
|
||
autoload -Uz compinit && compinit
|
||
zstyle ':completion:*' menu select
|
||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
|
||
|
||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||
EOL
|
||
|
||
# 添加常用别名
|
||
local aliases=(
|
||
"ll:ls -la"
|
||
"..:cd .."
|
||
"...:cd ../.."
|
||
"....:cd ../../.."
|
||
"update:sudo apt-get update"
|
||
"upgrade:sudo apt-get upgrade"
|
||
"vi:nvim"
|
||
"vim:nvim"
|
||
"edit:nvim"
|
||
)
|
||
|
||
for alias_pair in "${aliases[@]}"; do
|
||
local name="${alias_pair%%:*}"
|
||
local value="${alias_pair#*:}"
|
||
add_alias "$name" "$value" "${USER_HOME}/.zshrc"
|
||
done
|
||
|
||
# 设置编辑器
|
||
add_env_var "EDITOR" "nvim" "${USER_HOME}/.zshrc"
|
||
add_env_var "VISUAL" "nvim" "${USER_HOME}/.zshrc"
|
||
|
||
update_progress "配置 Zsh" "完成"
|
||
}
|
||
|
||
# 主函数
|
||
main() {
|
||
# 检查root权限
|
||
check_root
|
||
|
||
# 获取用户信息
|
||
get_user_info
|
||
|
||
# 设置日志
|
||
setup_logging
|
||
|
||
# 检查依赖
|
||
check_dependencies "git" "curl" "wget" "zsh" "sudo"
|
||
|
||
# 安装基础依赖
|
||
install_base_dependencies
|
||
|
||
# 安装 zsh
|
||
ensure_package "zsh"
|
||
|
||
# 安装 Oh My Zsh
|
||
install_oh_my_zsh
|
||
|
||
# 安装主题和字体
|
||
install_theme_and_fonts
|
||
|
||
# 安装基础插件
|
||
install_base_plugins
|
||
|
||
# 配置 Zsh
|
||
configure_zsh
|
||
|
||
# 设置权限
|
||
show_progress "设置权限"
|
||
chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.oh-my-zsh
|
||
chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.zshrc
|
||
chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.local
|
||
update_progress "设置权限" "完成"
|
||
|
||
log_success "Zsh 环境配置完成!"
|
||
log_info "请重新打开终端或运行 'source ~/.zshrc' 使配置生效"
|
||
log_info "首次登录后,运行 p10k configure 来配置 Powerlevel10k 主题"
|
||
}
|
||
|
||
# 执行主函数
|
||
main |