跳转至

OhMyZsh 配置完全指南

预计阅读时长 : 11 分钟

oh my zsh 是目前最流行的终端 zsh 的优化版本,拥有对使用者更友好的交互样式,以及通过插件实现的丰富附加功能。

快速安装

通过以下命令,可以快速安装 oh my zsh ⧉

$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Oh My Zsh 安装完毕之后,会将相关的配置写入 ~/.zshrc 文件中,包括之后的插件管理和其他配置也会写入到这个文件中。

不过,我们暂时不去管它,先继续下面的教程,了解相关的配置,并安装对应的工具。

看完之后,记得使用 .zshrc 文件内容替换掉 ~/.zshrc 文件,并重启终端,即可完整体验文中提到的各项功能。

插件管理

Oh My Zsh 配置的核心工作是配置各种插件。虽然 Oh My Zsh 可以自行管理插件,但是为了增强可迁移性,我们接下去会使用 zgenom 这个插件管理器来管理插件。

通过以下命令,可以快速安装 zgenom ⧉

$ git clone https://github.com/jandamm/zgenom.git "${HOME}/.zgenom"

注意

安装 oh my zshzgenom 时都可能会遇到某些目录不安全或者没有访问权限的问题,可以使用以下的命令进行处理。

chmod 755 ~/.oh-my-zsh
chmod 755 ~/.zgenom

配置文件中使用的插件列表,详见上面提供的配置文件。如果除了这些之外,还有个性化的需要,可以参考 官方插件列表 ⧉ 进行添加。

主题配置

既然都开始折腾 Oh My Zsh 了,那么不在主题上花点心思,实在是不能称之为一个合格的颜值党。

官方主题

Oh My Zsh 自带有多种Theme ⧉。通过在 ~/.zshrc 配置文件中,将 ZSH_THEME 属性值修改为对应的 Theme 名称并重启终端即可启用。

不过,更加建议使用接下去介绍的 Powerlevel10k ⧉ 主题,相对于自带的主题,美观程度那是炸裂级别的提升。

安装 Powerlevel10k 主题

首先,通过以下命令安装 Powerlevel10k 模版。

[[ ! -f "${HOME}/.p10k.zsh" ]] && git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

然后,在 ~/.zshrc 文件中,将 ZSH_THEME 的属性值修改为 powerlevel10k/powerlevel10k。重启终端,将自动进入 powerlevel10k 的配置流程,根据引导选择自己喜欢的样式即可。对于老用户而言,也可以使用 p10k configure 重新进行配置。

在选择了合适的主题、配色、字体和提示后,最终的终端展现效果如下图所示。

替代选择

如果还是不满意,oh-my-posh ⧉ 也是一个不错的选择。

核心功能

结合 oh my zsh 自带的插件,以及一些单独安装的应用,我们可以打造一个更加智能、更加高效的终端。

快捷操作

在使用终端的时候,输入时难免有需要修改的场景,强烈建议掌握以下七个快捷操作,可以大幅提升效率。

  • 移动光标
    • Option+Left : 往左移动一个单词
    • Option+Right : 往右移动一个单词
    • Cmd+Left : 移动光标到开头
    • Cmd+Right : 移动光标到结尾
  • 删除字符
    • Ctrl+W / Option+Del : 往回删除一个单词,光标放在最末尾
    • Ctrl+U : 删除光标以前的字符
    • Ctrl+K : 删除光标以后的字符
    • Ctrl+L : 清屏
  • 取消输入
    • Ctrl+C : 取消输入的命令
    • Ctrl+Z : 撤回上一个输入
    • Ctrl+Y : 恢复上一个输入
  • 命令补全
    • Ctrl+R : 搜索历史命令
    • Esc : 修正错误命令
    • Tab : 补全命令

列表展示

对于最常用的 ls 命令,可以使用 eza ⧉ 工具进行替代。

通过配置别名 lstlsg,可以方便的展示目录树状结构和文件列表。

此外,我们还会在后面提到的交互式补全中,使用这个工具来提升交互体验。

自动补全

通过配合使用多个插件,以及进行个性化定制,可以实现目录、文件、命令、路径等各种场景下的自动补全。

其中,核心工具 fzf ⧉ 是一个通用的命令行模糊搜索工具,配合 fzf-tab 插件可以实现各种交互式补全体验。

首先,通过以下命令安装 fzf 工具:

[[ ! -d "${HOME}/.fzf" ]] && git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install

然后,启用 fzf-tab ⧉ 插件,并使用 Tab 键,即可在各种场景下实现交互式补全。

历史指令

进入终端之后,只需要使用上下方向键,即可在最近使用过的命令之间进行切换。

然后,输入命令的开始部分,就会自动匹配最近使用过的命令。此时,还可以继续使用上下方向键在模糊匹配的基础上进行切换。

通过 mcflly ⧉ 工具,可以替代默认的 Ctrl+R 快捷键,优化历史记录查询功能,交互式的查找匹配的历史指令。

自动纠错

thefuck ⧉ 是一个自动纠正错误命令的插件,对于还不太熟悉命令行的初学者而言是一个非常有帮助的功能。

对于输入错误的命令,只需要按两次 Esc 即可自动纠正为正确的命令。

thefuck
thefuck

路径跳转

z ⧉ 是一个可以快速跳转至曾经访问过的目录的插件。

在输入 z 之后,接着输入目录名称的部分内容,即可快速跳转至对应的目录。

进程管理

至于进程展示 top 命令, 则推荐使用 btop ⧉

Docker 管理

lazydocker ⧉ 是一个可以方便管理 docker 的工具,支持懒加载,启动速度非常快。

路径管理

除了常规的 PATH 路径外,作为一个开发者,还需要对 Python 和 Node 的路径进行更精细化的管理。

在使用 Pyenv 和 Poetry 管理 Python 版本和项目依赖的基础上,还增加了在终端中,自动激活所在目录或上级目录的 Python 虚拟环境的功能。

参考文档