myzshpack包管理CLI
功能介绍
myzshpack 用于从在线仓库安装/移除主题和插件,支持:
- 多仓库源聚合
- 变量替换
- 手动安装(直接指定 URL)
- 环境变量覆盖
前置配置
仓库配置文件
位置:~/.myzsh/config/myzshpack/packages_repo.json
默认内容:
json
{
"repo": [
{
"name": "default",
"index": "https://raw.github.com/mcmineleng/myzsh-package/main/index.json"
}
]
}可添加多个仓库源,索引会被自动合并去重。
环境变量配置
位置:~/.myzsh/config/myzshpack/env
格式示例:
ini
[default]
# 最低优先级
REPO_BASE=https://github.com
[global]
# 全局配置,覆盖 index.json 的 env
REPO_BASE=https://github.com
[仓库名]
# 仓库特定配置,覆盖 global
REPO_BASE=https://gitee.com变量优先级(从低到高)
[default]- 最低优先级- index.json 中的
env数组 [global]- 覆盖 index.json[仓库名]- 覆盖 global- 预设变量 (
INDEX_BASE_URL,INDEX_DOMAIN) - 最高优先级
命令说明
更新索引
shell
myzshpack update从所有配置的仓库源拉取索引并合并。首次使用前必须先执行此命令。
安装
从仓库安装
shell
myzshpack install <名称>从仓库安装主题或插件。如果名称只匹配主题或插件,直接安装;如果两者都匹配,会询问选择。
精确安装主题
shell
myzshpack install theme <名称>精确安装插件
shell
myzshpack install plugin <名称>手动安装(直接指定 URL)
shell
myzshpack install theme <URL> [类型]安装主题,类型可选:git(默认)、zip、tar.gz、tar
shell
myzshpack install plugin <URL> [类型]安装插件,类型可选:git(默认)、zip、tar.gz、tar
示例:
shell
myzshpack install theme https://github.com/romkatv/powerlevel10k.git安装 Git 仓库主题。
shell
myzshpack install plugin https://github.com/zsh-users/zsh-autosuggestions.git安装 Git 仓库插件。
shell
myzshpack install theme https://github.com/dracula/zsh/archive/master.zip zip安装 ZIP 压缩包主题。
shell
myzshpack install plugin https://github.com/sindresorhus/pure/archive/v1.0.0.tar.gz tar.gz安装 tar.gz 压缩包插件。
移除
shell
myzshpack remove <名称>移除已安装的主题或插件。如果同名主题和插件都存在,会询问移除哪个。
精确移除主题
shell
myzshpack remove theme <名称>精确移除插件
shell
myzshpack remove plugin <名称>搜索
shell
myzshpack search <关键词>在索引中搜索匹配的主题和插件,显示详细信息包括 URL 和类型。
列出可用包
shell
myzshpack list列出所有仓库中可用的主题和插件。
列出已安装包
shell
myzshpack list installed列出本地已安装的主题和插件。
查看帮助
shell
myzshpack help变量替换功能
index.json 中的 url 字段支持变量替换,格式为 ${VAR_NAME}。
index.json 示例
json
{
"env": [
{"REPO_BASE": "https://github.com"},
{"USER": "zsh-users"}
],
"plugins": [
{
"id": "zsh-autosuggestions",
"url": "https://${REPO_BASE}/${USER}/zsh-autosuggestions",
"type": "git"
}
]
}预设变量
更新索引时会自动设置以下变量:
INDEX_BASE_URL- 索引文件的完整 URLINDEX_DOMAIN- 索引文件的域名(包含协议头)
使用场景
通过环境变量可以灵活切换仓库源。
env 配置示例:
ini
[default]
REPO_BASE=https://github.com
[mirror]
REPO_BASE=https://gitee.com这样同一个 index.json 可以在不同环境下使用不同的仓库源,无需修改索引文件。
常见工作流
首次使用
shell
myzshpack update更新索引。
shell
myzshpack list查看可用包。
shell
myzshpack install powerlevel10k安装主题。
shell
myzshpack install zsh-autosuggestions安装插件。
shell
myzshpack install zsh-syntax-highlighting安装插件。
shell
myzsh theme set powerlevel10k设置主题。
shell
myzsh plugin交互式启用插件。
shell
myzsh edit myzsh/theme_config编辑主题配置(可选)。
日常使用
shell
myzsh theme set spaceship切换主题。
shell
myzsh plugin启用/禁用插件。
shell
myzshpack install plugin git安装新插件。
shell
myzshpack update更新包索引。
shell
myzshpack search git搜索包。
shell
myzshpack remove old-theme移除不需要的包。