为什么选择 zsh ? #
开始前,先问为什么,知其然,要知其所以然,是个好习惯。所以,为什么要用 zsh 呢?
大家最熟悉的 shell 解释器,肯定是 bash。zsh(Z Sehll)相对于 bash(Bourne Again Shell)相对有哪些优势呢?
改进的自动补全能力 #
zsh 提供了更强大、更灵活的自动补全功能。它不但可以自动补全命令,设置选项、参数甚至文件名,都可自动补全。
对于命令参数,zsh 甚至可以显示简短的帮助信息,这使得探索新命令变得更加容易。
更好的脚本和插件支持 #
zsh 有一个强大的社区,提供了大量的插件和主题,如 oh-my-zsh 这个流行的 zsh 框架,允许我们轻松添加、更新插件和主题。
这些插件可以增强 shell 的功能,提供便捷的别名、函数以及其他有用的特性。
高级的主题和提示符定制 #
zsh 还允许用户对命令行提示符进行高度定制,包括颜色、内容和格式。用户可以非常容易地调整提示符来显示 git 分支、Python 虚拟环境等信息。
我们会在后续介绍一款非常强大的 zsh 插件,名为 powerlevel10k,它支持完全的主题自定义特性,非常强大。
更智能的命令行交互 #
zsh 还支持 bash 不具备的一些智能特性,如拼写校正和近似完成。如果用户输入的命令有拼写错误,zsh 可以建议正确的命令。
如我输入 lls,会提示我 “zsh: correct ’lls’ to ’ls’ [nyae]?”
❯ lls
zsh: correct 'lls' to 'ls' [nyae]?
输入 y 接受纠正建议。
当然这个是要做个简单的配置,通过 setopt CORRECT_ALL
启用。
其他 #
其他还有很多强大特性。如:
zsh 的命令行历史是终端间共享的,通过自动补全,能一步增强了操作效率与体验。
zsh 的文件匹配和通配符功能确实比 Bash 要强大得多,除了常规的通配符能力,还提供了一些扩展通配符、限定符等,如递归匹配 **/
,ls **/*.go
会列出所有的 Go 文件。!{pattern}
,匹配不符合模式的内容。其他更多自行探索。
zsh 的可配置性更强,zsh 提供了比 bash 更多的选项和特性,我们都可通过配置文件调整。