抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Sephiroth1s'blog

The quieter you became,the more you are able to hear.

背景

原本使用的是 ohmyzsh 使用 antigen 来管理插件,但是发现 antigen 很久都没再更新了,同时偶尔发现打开终端有时候会有肉眼可见的加载然后才出现$。于是就有了更新换代的想法。

原有插件关闭和卸载

插件本质上就是一组脚本,所以一般情况下直接删除 zshrc 中的配置即可。删除文件夹主要是为了清理以后不会用到的部分

  • .zshrc 中删除 antigen 相关配置
  • .zshrc 删除 ohmyzsh 相关配置,我的配置是下面这些
    ANTIGEN="$HOME/.antigen.zsh"
    source "$ANTIGEN"
    antigen bundle zsh-users/zsh-syntax-highlighting
    antigen bundle zsh-users/zsh-autosuggestions
    antigen bundle zsh-users/zsh-completions
    antigen apply

    source $ZSH/oh-my-zsh.sh
  • 检查其他 zsh 配置文件是否有上述相关配置,如.zprofile 文件
  • 删除掉~/.antigen 文件夹
  • 删除 ~/.oh-my-zsh 文件夹(可选)

安装 zinit

原来的 zinit 已经没了,故使用比较活跃的社区版本,安装也比较简单

手动

  • 创建个~/.zinit 文件夹保存 zinit,这个文件夹随意,我只是为了方便记
    git clone https://github.com/zdharma-continuum/zinit.git ~/.zinit/bin
  • 在~/.zshrc 文件顶部添加下面这句启用,然后重启下终端就行了
    source ~/.zinit/bin/zinit.zsh

自动

官方的懒人一键脚本

bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"

配置 zinit

zinit 最大的特色就是延迟加载,这样就不用担心特别慢的插件了,下面记录几个常用的 zinit 功能,

light

  • 加载插件无调试跟踪信息,用 load 有,会比 light 慢
    zinit light zsh-users/zsh-syntax-highlighting
    zinit light zsh-users/zsh-autosuggestions
    zinit light zsh-users/zsh-completions

snippet

  • 加载 Oh My Zsh, Prezto 的单文件插件可以用。
  • snipeet 后面可以指向具体的代码片段链接,会自动下载下来的。
  • OMZ 是等效https://github.com/ohmyzsh/ohmyzsh/raw/master/ 只是为了方便缩写的短名称。具体还有哪些可以参考官方zinit 自带的短链接
  • 也可使用 for 语法合并成一行,但个人不喜欢,全当备忘,留个记录。
    # 加载部分oh my zsh的功能,可以从OMZ的lib目录找
    zinit snippet OMZ::lib/completion.zsh
    zinit snippet OMZ::lib/history.zsh
    zinit snippet OMZ::lib/key-bindings.zsh
    zinit snippet OMZ::lib/theme-and-appearance.zsh
    zinit snippet OMZ::lib/git.zsh

    # 加载部分OMZ的插件
    zinit snippet OMZ::plugins/colored-man-pages/colored-man-pages.plugin.zsh
    zinit snippet OMZ::plugins/sudo/sudo.plugin.zsh

    # for语法 等效上面的一行一行设置。
    zinit for \
    OMZL::functions.zsh \
    OMZL::misc.zsh \
    OMZL::completion.zsh

ice 修饰模式

  • 会作用于 zinit 的下一个语句,有很多种修饰符,主要介绍用到的。

加载多文件插件或指定文件

  • 可以用 zinit ice svn 加 snipeet 来使用。暂时还没用到参考的这里
    # 默认svn后面不加任何后缀,默认加载*.plugin.zsh, init.zsh, *.zsh-theme这些
    zinit ice svn
    zinit snippet PZT::modules/docker

    # 也可以使用pick加载指定文件
    zinit ice svn pick"init.zsh"
    zinit snippet PZT::modules/git

延迟加载

  • 最重要的功能,可以把加载慢的插件放到 prompt 出现后的 n 秒。相当于用户无感知的后台加载。
    # 万能解压x 
    zinit ice lucid wait='1'
    zinit snippet OMZ::plugins/extract
    # 常见的alias
    zinit ice lucid wait='1'
    zinit snippet OMZ::plugins/common-aliases/common-aliases.plugin.zsh
    # 延迟加载 git插件,方便使用依赖git的OMZ插件
    zinit ice lucid wait='1'
    zinit snippet OMZ::plugins/git/git.plugin.zsh

zsh 语法补全初始化

  • 加载 zsh 的 compinit 补全初始化,这个虽然可选,但建议必须加上
  • 根据 zinit 官方建议必须放在所有补全类型插件的最后启动 zicompinit; zicdreplay 否则可能补全功能不完整
# 加载 zsh 的 compinit 补全初始化
zinit for \
atload"zicompinit; zicdreplay" \
blockf \
lucid \
wait \
zsh-users/zsh-completions

性能分析工具

  • zinit 自带工具,终端中输入 zinit times 就可以展示各个插件的加载时间
  • zsh 自带是分析工具,需要在 .zshrc 中先添加 zmodload zsh/zprof,然后才可以用 zprof 查看加载时间

完整的配置文件

# 本质都是脚本git clone下来后使用source加载第一个脚本
source ~/.zinit/bin/zinit.zsh
# Zsh plugins
zinit light zsh-users/zsh-syntax-highlighting
zinit light zsh-users/zsh-autosuggestions

# 加载部分oh my zsh的功能,可以从OMZ的lib目录找
zinit snippet OMZ::lib/completion.zsh
zinit snippet OMZ::lib/history.zsh
zinit snippet OMZ::lib/key-bindings.zsh
zinit snippet OMZ::lib/theme-and-appearance.zsh
zinit snippet OMZ::lib/git.zsh

# 加载部分OMZ的插件
zinit snippet OMZ::plugins/colored-man-pages/colored-man-pages.plugin.zsh
zinit snippet OMZ::plugins/sudo/sudo.plugin.zsh

# 万能解压x
zinit ice lucid wait='1'
zinit snippet OMZ::plugins/extract
# 常见的alias
zinit ice lucid wait='1'
zinit snippet OMZ::plugins/common-aliases/common-aliases.plugin.zsh
# 延迟加载 git插件,方便使用依赖git的OMZ插件
zinit ice lucid wait='1'
zinit snippet OMZ::plugins/git/git.plugin.zsh

# 加载zsh的compinit补全初始化,放在所有补全插件的最后启动
zinit for \
atload"zicompinit; zicdreplay" \
blockf \
lucid \
wait \
zsh-users/zsh-completions

# source $ZSH/oh-my-zsh.sh

# 性能分析时打开
# zinit自带性能分析
# 使用:zinit times
# zsh自带性能分析
# zmodload zsh/zprof
# 使用:zprof

更详细的配置参考

官方 github
官网 wiki
比较简洁的参考(中文)