使用 Zim 配置称手且快速的 Zsh——语法高亮、自动补全、键位配置等
Zim 是 Zsh 的插件管理器,其主要特点为极快的速度。本文介绍了如何配置 Zim 以及推荐了几款笔者使用的 Zsh 插件。
安装 Zim
笔者偏好将配置整理到不同文件并在 .zshrc
中 source
,而 Zim 的自动安装脚本会在 .zshrc
添加一大段内容,所以选择手动安装。
创建 init_zim.zsh
用于存放 Zim 配置,并添加以下内容1:
文件的第一行配置了 degit 来安装插件。degit 只下载 Git 仓库的最新版本,所以比直接使用 git clone
下载整个仓库历史快。
接着在 .zshrc
中添加导入配置文件,笔者将所有 Zsh 相关配置文件都放在 ~/.config/zsh
目录下:
安装插件
Zim 的插件需要在 ~/.zimrc
中配置。添加插件的基本命令为 zmodule 插件
(内置插件)或者 zmodule 作者/仓库
,如果插件在子目录下则为zmodule 作者/仓库 --root 插件相对路径
。具体用法可以参考 文档。Zim 内置插件可以参考官网上的 列表,第三方插件可以参考 awesome-zsh-plugins。
推荐插件
必要
- input,配置按键,例如 home 键移动到当前行的开头
- F-Sy-H,语法高亮
- 也可以选择 fast-syntax-highlighting 或 zsh-syntax-highlighting,区别不大
- zsh-autosuggestions,在终端显示命令建议
- zsh-completions,许多外部命令的自动补全
- zsh-history-substring-search,使用方向键搜索命令历史记录
可选
- history,命令历史相关设置,比直接使用
setopt
方便和快速 - command-not-found,输入不存在的命令时提示安装命令
- sudo,双击 esc 时在命令前添加
sudo
- completion,自动补全相关设置
- utility,命令缩写以及为
ls
、grep
和less
命令输出上色 - termtitle,设置终端标题,例如设置为当前路径
.zimrc
内容如下:
安装太多插件可能会拖慢 Zsh 速度,所以建议读者只安装必要的插件。
插件设置
在 init_zim.zsh
最后添加插件设置:
由于 Zim 会运行 compinit
,所以还需要 ~/.zshenv
中禁用 Ubuntu 的 compinit
以加快启动速度12:
测速
配置好后使用 hyperfine 测试 Zsh 启动速度。测试环境为 WSL Ubuntu 22.04 LTS。
启用 Zim
hyperfine
的参数--warmup 3
用于在测速前运行几遍命令以避免冷启动影响结果。- Zsh 的参数
-l
和-i
用于模拟用户启动 Zsh,具体可参考 文档。 -c
用于执行exit
命令以结束 Zsh。
禁用 Zim(不读取 .zshrc
)
注意到,Zim 还是比较快的,仅增加了约 20 毫秒的启动时间。
更新 Zim 和插件
在终端中输入命令 zimfw help
就可以看到所有 Zim 提供的命令,其中常用的:
zimfw upgrade
:更新 Zimzimfw update
:更新所有插件
解决 WSL 下语法高亮的延迟
在 /etc/wsl.conf
中添加以下内容以取消加载 Windows 的 PATH
环境变量3。
这同时也会导致 WSL 下无法直接运行 Windows 中的程序。如果需要在 WSL 中运行 Windows 中的程序,可以将路径以 WSL 下的 格式 添加到 Zsh 的 PATH
环境变量。
Footnotes
-
Installation, https://zimfw.sh/docs/install/ ↩ ↩2
-
Speed up zsh compinit by only checking cache once a day, https://gist.github.com/ctechols/ca1035271ad134841284 ↩
-
syntax highlighting is super slow in WSL2, https://github.com/zsh-users/zsh-syntax-highlighting/issues/790#issuecomment-1385406603 ↩