zinit 配置 zsh
先前就已经在 wsl 中配置了 zsh 以及 oh-my-zsh ,但是插件过多导致启动速度非常之慢,在搜索中发现了一个解决方案,即使用 zinit 代替 oh-my-zsh 。
起因
在 wsl 借助 anaconda 配置 volatility 这篇文章中我就提到过自己已经配置过 zsh,当初是因为看了鹤翔万里的视频 选择了一个个人感觉比较好用的终端,搭配上 oh-my-zsh[1],安装了一些插件后,个人手感还挺不错的,就放着没管了。但最近突发奇想又开始捣鼓 wsl 之后发现启动实在太慢,粘贴甚至也是一个字母一个字母的贴进去的,手感实在太差,于是就在网上搜索提速的方案。于是便找到了本次的主角 zinit[2]。
“冷门”但强大的插件管理器
zinit 的中文资料相较于 oh-my-zsh 确实少了很多,github 上的 star 数目相比之下也不多,以致我一开始并没有清楚理解 zinit 的正确使用方式,直到查阅了这篇 blog[3],我才明白它某种意义上是与 oh-my-zsh 处于并列层级的。而它最大的优点就是可以实现异步加载插件,可以实现 zsh 已经打开但部分插件在后台加载,或是在特定条件下加载,这样就可以大大提高 zsh 的启动速度。而且,它也支持 oh-my-zsh 的插件,所以我可以继续沿用习惯的插件。
安装配置
zsh 的安装便不再赘述。首先是安装 zinit。因为绝大部分的中文引导都写作于三四年前,安装方式与现在有所不同,所以我直接参考了 repo,官方给出了自动和手动两种方式,我选择了自动安装。
1 |
|
执行这一命令后,zinit 会安装在
~/.local/share/zinit/zinit.git
,并且会更新
.zshrc
文件,使得我们可以在 zsh 中使用 zinit 命令。
不过在安装和重启 zsh 后,我们需要执行 zinit self-update
来更新 zinit。
手动安装则需要在 .zshrc
文件中添加如下内容:
1 |
|
并且注意,如果你选择在 compinit
后执行
source $ZINIT_HOME/zinit.zsh
,那么你需要在这之后额外添加如下内容
1 |
|
这之后退出 zsh 便可以安装 zinit 了。
手动安装的好处是可以自定义安装路径,但是目前而言我觉得自动安装已经足够了,虽然我总得有一天去收拾 dotfiles。
插件安装
zinit 的插件管理实际上是从对应 url 获取插件内容,下载下来后自行编译的,而这获取内容的方式有很多种,但试验了一部分发现以前的一些示例已经存在问题了,所以我只介绍我使用的方式。
从 GitHub repo 加载插件
1 |
|
load
方式支持后续在终端中查看插件的加载情况,方法为
zinit report
,而 light
方式则不支持。不过相应地,light
方式加载插件的速度会更快一些。但开启 Turbo
模式后,这点差异可以忽略不计。
从 oh-my-zsh 加载插件
这里使用的是 zinit snippet
命令,它可以加载代码片段来实现插件安装。而 oh-my-zsh 因为太过常用,所以
zinit 提供了相应的缩写。
1 |
|
Ice 修饰词
命令 zinit ice
为下一条命令提供了 Ice
修饰词,简而言之就是下一条命令的可选参数。
2024.1.8 Github 取消了对于 Subversion 的支持,svn 修饰词的可用性下降许多。Sunsetting Subversion support
我使用的修饰词有如下三个:
depth: 将
--depth
参数传递给git
,即限制下载的历史记录量。但是不适用于 snippets。wait: 推迟插件加载时间,后接数字,单位为秒。单独使用 wait 默认为
wait '0'
。lucid: 跳过
wait
修饰词的Loaded ...
消息。
配置示例
大部分都是抄的 Aloxaf 大佬的 blog,他写的 fzf-tab[4] 插件也十分的好用。
1 |
|