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 操作系统

MPL-2.0 许可证

150KB
350

zr(at)

快速、简单的 zsh 插件管理器

zrat
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
}

感谢

依赖项

~15MB
~351K SLoC