6 个版本 (2 个稳定版)
1.1.0 | 2023年2月25日 |
---|---|
1.0.0 | 2020年6月2日 |
0.7.2 | 2019年3月29日 |
0.6.4 | 2017年12月27日 |
0.6.3 | 2017年10月2日 |
#242 in 操作系统
150KB
350 行
zr(at)
快速、简单的 zsh 插件管理器
zr 1.1.0
by Jonathan Dahan <hi@jonathan.is>
zr [[http://example.com]plugin/name[.git/a/file.zsh]] fetch plugins and output sourceable zsh
zr --update updates plugins from already sourced zsh
zr help show help
Examples
zr author/name *.zsh from github.com/author/name
zr author/name/file.zsh file.zsh from github.com/author/name
zr https://gitlab.com/a/plugin *.zsh from gitlab.com/a/plugin
zr https://gitlab.com/a/plugin.git/file.zsh file.zsh from gitlab.com/a/plugin
安装
zr
已发布到 crates.io,可以使用 cargo install zr
安装
用法
将此添加到您的 ~/.zshrc
# simplest usage
. <(zr frmendes/geometry junegunn/fzf.git/shell/key-bindings.zsh)
一个稍微复杂一点的例子,仅在 .zshrc 更新时生成
# Generate new ~/.config/zr.zsh if it does not exist or if ~/.zshrc has been changed
if [[ ! -f ~/.config/zr.zsh ]] || [[ ~/.zshrc -nt ~/.config/zr.zsh ]]; then
zr \
frmendes/geometry \
jedahan/geometry-hydrate \
junegunn/fzf.git/shell/key-bindings.zsh \
> ~/.config/zr.zsh
fi
source ~/.config/zr.zsh
标识符
zr
支持四种标识符格式。最后一种格式需要 .git
作为分隔符。
格式 | 解析为 |
---|---|
作者/名称 |
*.zsh 来自 https://github.com/author/name |
作者/名称/文件.zsh |
file.zsh 来自 https://github.com/author/name |
https://gitlab.com/a/plugin |
*.zsh 来自 https://gitlab.com/a/plugin |
https://gitlab.com/a/plugin.git/file.zsh |
file.zsh 来自 https://gitlab.com/a/plugin.git. .git 用作分隔符,是必需的。 |
速度
以下两个基准测试是在我的 dell xps13 9380 上进行的
- 从十多个仓库生成可源代码的脚本的耗时为 5 毫秒
- zsh 加载上述脚本的额外耗时为 15 毫秒
# install hyperfine for benchmarking
$ which hyperfine || cargo install hyperfine
# run
$ hyperfine --warmup 3 'zsh -d -f -l -c "source benchmark.zsh && zrinit && exit"' 'zsh -d -f -l -c "source benchmark.zsh && . <(zrinit) && exit"'
Benchmark #1: zsh -d -f -l -c "source benchmark.zsh && zrinit && exit"
Time (mean ± σ): 5.3 ms ± 2.3 ms [User: 2.8 ms, System: 2.4 ms]
Range (min … max): 2.9 ms … 9.9 ms 285 runs
Benchmark #2: zsh -d -f -l -c "source benchmark.zsh && . <(zrinit) && exit"
Time (mean ± σ): 21.8 ms ± 1.0 ms [User: 17.5 ms, System: 5.1 ms]
Range (min … max): 19.7 ms … 26.4 ms 127 runs
# benchmark.zsh
function zrinit {
XDG_CACHE_HOME=/tmp/zrbenchmark zr sorin-ionescu/prezto.git/modules/git/alias.zsh \
sorin-ionescu/prezto.git/modules/history/init.zsh \
junegunn/fzf.git/shell/key-bindings.zsh \
zsh-users/zsh-autosuggestions \
zdharma/fast-syntax-highlighting \
molovo/tipz \
geometry-zsh/geometry \
jedahan/geometry-hydrate \
jedahan/geometry-todo \
geometry-zsh/geometry \
ael-code/zsh-colored-man-pages \
momo-lab/zsh-abbrev-alias \
jedahan/alacritty-completions \
zpm-zsh/ssh
}
感谢
- SX91 为 Linux 修复问题
- alanpearce 为错误报告和 nix 软件包
- nshtg 为错误报告和 Windows 修复
- foray1010 为改进安装说明
- Avi-D-coder 为添加完成支持
- ralsei 为推动更新 crates.io
- tekumara 为帮助弄清楚 --update
- myrovh 为修复某些 Linux 系统上的恐慌
- TimB87 为添加 openssl 3 支持
- 在 #rust-beginners 上的每个人
依赖项
~15MB
~351K SLoC