Terminal、iTerm2、zsh和oh-my-zsh
作为一名程序员,我们跟终端打交道的频率非常地高,终端的是否好用,往往跟我们的效率关系很大。一开始用的是 MacOS 自带的 zsh,有时候在敲很长的 shell 命令时,发现打错了某个字符,想要修改,很是麻烦。这让我不禁想,要是终端命令也能用 vi 来编辑该多好!!!于是开始捣鼓,我发现了 oh-my-zsh
1.1 Terminal、iTerm2、zsh、bash 之间的关系
在使用 oh-my-zsh 之前,先了解一下 Terminal、iTerm2、zsh、bash 之间的关系。
Terminal、 iTerm2 跟 zsh、bash 并不是一类东西。
zsh 和 bash 是两种不同的 shell,是区别于『核』的『壳』,借助 shell,我们可以通过命令对系统进行操作。zsh 和 bash 之间有一定的兼容性。
而 Terminal 和 iTerm2 是相同种类的 APP,是各种 shell 的 GUI,可以通过 Terminal.app 来跑 zsh 和 bash,也可以通过 iTerm2 来运行。只是相比之下,iTerm2 比 MacOS 自带的 Terminal 要好用得多。
此外,像 Jetbrains IDE 和 Visual Studio Code 等内置的终端,跟 Terminal 和 iTerm2 也是同一类应用程序。
1.2 iTerm2
iTerm2 的配色主题方案:https://iterm2colorschemes.com/
1.3 oh-my-zsh 简介与官网
官网与项目地址:
oh-my-zsh 可以理解成 zsh 的超级增强版,如果是 MacOS,且默认的 shell 是 zsh,那安装是相当容易的,只需要根据 GitHub 上的教程,执行以下命令,就可以安装好了
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
安装后,oh-my-zsh 会将自己的配置 .zshrc 去覆盖旧的,而旧的 .zshrc 会被备份为 .zshrc.pre-oh-my-zsh,该备份有两个用处:
- 可以将自己原先的配置,例如 Java 相关环境变量,移动到新的
.zshrc配置中 - 当以后要写在 oh-my-zsh 时,直接在终端执行 uninstall_oh_my_zsh 命令,程序会将所有与 oh-my-zsh 有关东西都删除掉,然后还原该备份文件为
.zshrc
当然,我相信你用了它之后,不会想卸载的,作为 zsh 的超级增强版,oh-my-zsh 真的很强大,很易用
oh-my-zsh 本质跟 zsh 没有什么区别,该怎么配置,还是怎么配置,但 oh-my-zsh 在原基础上新增了插件和主题机制,同时提供了很多实用的别名(alias)
oh-my-zsh 在安装后,便自带了很多插件和主题,我们只需要在 .zshrc 中根据注释,在 plugins 中加入想要的启动的插件即可,主题也同理
但是要注意,许多主题如果想要正常地显示,可能需要特定的字体补丁。即需要安装 Powerline Font 或者 Nerd Font,对于这两种的字体补丁的介绍见:字体
例如 agnoster 主题,如果没有合适的字体补丁,就会乱码
用了 Powerline Font 或 Nerd Front 后,就正常了
此外,oh-my-zsh 还支持第三方的插件和主题,只需要下载后,放置到 ~/.oh-my-zsh/custom 目录下即可启动
1.4 推荐的插件
插件也不宜启动太多,oh-my-zsh 的作者也提到,如果插件太多,会影响到 shell 的启动速度
如果不看下面的介绍,可以直接批量启动推荐的插件
1 | omz plugin enable vi-mode z zsh-syntax-highlighting zsh-autosuggestions sudo |
- vi-mode:首推,也是我想要用 oh-my-zsh 的原因(虽然其他的很多也可以,但挡不住它简单)
- git:提供很多 git 命令的缩写(别名),默认启动
1.4.1 autojump vs z
快速跳转到最近的文件夹
| 特性 | z | autojump |
|---|---|---|
| 安装方式 | Oh-My-Zsh 内置 | 需要单独安装 |
| 依赖 | 无 | 需要 Python |
| 性能 | 更快,纯 shell | 稍慢,调用 Python |
| 功能 | 基础但够用 | 功能更丰富 |
| 维护 | OMZ 团队维护 | 独立项目 |
| 推荐度 | ⭐⭐⭐⭐⭐ 首选 | ⭐⭐⭐⭐ 高级用户 |
如果要用 autojump,需用 homebrew 安装一下
1.4.2 sudo
功能:按两次 ESC 自动在当前命令前加 sudo
1.4.3 zsh-syntax-highlighting ⭐
功能:实时高亮命令语法,错误命令显示红色
1 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting |
1.4.4 zsh-autosuggestions ⭐
功能:根据历史命令自动建议补全
1 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions |
1.5 推荐的主题
每个人的 the right-one 都不同,可以到 这里 去找,个人喜欢 apple 主题
其他三方主题推荐:
- https://github.com/romkatv/powerlevel10k,具体使用详见 readme
