Featured image of post 为 Windows Terminal 配置 zsh + Oh My Zsh![非 WSL]

为 Windows Terminal 配置 zsh + Oh My Zsh![非 WSL]

- 在 Windows Terminal 中用上 zsh,找回类 Unix 系统下的感觉!

在 Windows 里做到类 Unix 系统的使用体验

先上效果图:

Windows Terminal With zsh Powered By Oh My Zsh

前言

最近又回到使用 Windows 环境开发。在 Windows 下获得类 Unix 系统的体验一直不是很好,尤其是在使用命令行时。Windows 自带的命令行工具 cmd 和 PowerShell 都不如 Unix 系统下的 bash 和 zsh 好用。所以,我决定在 Windows 下折腾一下 zsh,并且让 zsh 能在 Windows Terminal 中使用。

整体思路如下:Windows Terminal 只负责“窗口”,真正干活的是 Cygwin 提供的 zsh.exe,Oh My Zsh 再在 zsh 之上负责主题和插件。

整体结构

环境要求

以下步骤是在 Windows 10 及以上系统中进行的(更推荐 Win11,截至 2024-03-26 已经是 Win11 23H2 22631.3296)。

为了节省时间,文章中类似下载安装等基础入门的步骤我是用 GitHub Copilot 生成的,并经过了我的审核,避免一眼 AI 犯的低级错误。

安装 Windows Terminal(必须)

软件源

Windows Terminal 有两种可信的下载安装渠道:

  • Microsoft Store 中下载安装;
  • 从 GitHub 的 releases 页面下载最新的安装包。

任选其一即可,小白推荐使用 Microsoft Store 安装。Windows 11 已经自带 Windows Terminal,可以跳过这一步。

方法 1:Microsoft Store

  1. 打开 Microsoft Store,搜索“Windows Terminal”。
  2. 点击“获取”,然后安装。
  3. 安装完成后,打开“开始”菜单,找到并运行“Windows Terminal”。

方法 2:GitHub Releases

  1. 访问 GitHub 的 releases 页面。
  2. 下载最新的 .msixbundle 文件。
  3. 双击下载的文件,开始安装。
  4. 安装完成后,打开“开始”菜单,找到并运行“Windows Terminal”。

安装 Cygwin(极力推荐)

这里没有选择 Git for Windows 的原因是:装上了就真的只是装上了 = = 啥也不知道,包括背后的原理……

Cygwin 是一个在 Windows 上运行的类 Unix 环境。它提供了一套类 Unix 系统下的工具和库,可以让你在 Windows 上获得类 Unix 系统的体验。

个人理解:Cygwin 就像 Linux 各发行版的 apt、yum/dnf、yay、pkg 等包管理工具(但它是一整套环境),可以非常方便地在 Windows 上安装类 Unix 系统的工具和库。

安装过程:

Cygwin 安装界面

注意事项主要有:

  • Cygwin 的安装包可以从官网 cygwin.com 下载,直接下载 setup-x86_64.exe 即可。
  • 安装时,在软件包选择界面搜索并勾选 zsh、git、curl 等工具(后面安装 Oh My Zsh 要用到 git 和 curl)。
  • 之后想补装软件包,重新运行一次 setup-x86_64.exe 即可。

配置 Windows Terminal 及系统环境变量

配置 Windows Terminal

概述:打开 Windows Terminal 新增一个配置文件,以便在 Windows Terminal 中使用 Cygwin 的 zsh。

步骤如下:

  1. 打开 Windows Terminal。

    默认情况下,Windows Terminal 会打开一个 PowerShell 窗口。我们需要新建一个配置文件,以便在 Windows Terminal 中使用 Cygwin 的 zsh。

  2. 点击 Windows Terminal 窗口标签栏右侧的下拉菜单,选择“设置”。

  3. 在设置窗口左下角,点击“+ 添加新配置文件”。

  4. 按照如图所示配置:

    Windows Terminal 配置

需要特别注意的是:

  • “命令行”(commandline)配置项的值为 Drive:\cygwin64\bin\zsh.exe --login -i,其中 Drive 是驱动器盘符,Drive:\cygwin64 是 Cygwin 的安装目录。--login 表示以登录 shell 启动,会读取 /etc/profile 等文件来设置 HOME、PATH 等环境;-i 表示交互模式。不加有时也能用,但建议加上,环境更完整。
  • 启动目录建议设置到其他磁盘目录,如 D:\YourNameDir,我这里设置的是 D:\project,目的是避免某一天不得不重装系统……又或者 C 盘空间爆红时头疼。当然,这一步也可以在“配置文件” → “默认值” → “启动目录”中进行全局设置,所有配置文件都会生效。
  • 回到左侧的配置列表,在“启动” → “默认配置文件”中选择刚刚新增的配置文件,点击“保存”。之后每次打开 Windows Terminal 都会默认使用这个配置文件(zsh)。

配置系统环境变量

概述:把 Cygwin 的目录加入系统环境变量 Path,这样在 Windows 的其他终端里也能直接调用 Cygwin 的工具。

  1. 打开 Windows 的“控制面板”。
  2. 点击“系统和安全”。
  3. 点击“系统”。
  4. 点击“高级系统设置”。
  5. 在弹出的“系统属性”窗口中,点击“环境变量”。
  6. 在“系统变量”中,找到 Path,点击“编辑”。
  7. 点击“新建”,添加 Cygwin 的 bin 目录,如 Drive:\cygwin64\bin,还有 Drive:\cygwin64\sbin。
  8. 点击“确定”,保存配置。

在 Windows Terminal 中测试 zsh 可用性

验证配置

打开 Windows Terminal,如果前面配置正确,默认打开的就是 Cygwin 的 zsh 啦。也可以运行下面的命令确认:

1
2
echo $SHELL
zsh --version

第一次启动 zsh 时,可能会出现 zsh-newuser-install 的配置向导,按 q 退出,或者按 0 创建一个空的 ~/.zshrc 即可,反正后面 Oh My Zsh 会接管它。

配置及美化 zsh

安装 Oh My Zsh

概述:安装 Oh My Zsh,以便配置和美化 zsh。

  1. 打开 Windows Terminal。

  2. 运行以下命令安装 Oh My Zsh:

    1
    2
    
    # 安装 Oh My Zsh(首选)
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    

    在中国大陆地区,如果遇到网络问题,可以使用清华大学 TUNA 镜像安装:

    1
    2
    3
    4
    
    # 安装 Oh My Zsh(备选)
    git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git
    cd ohmyzsh/tools
    REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh install.sh
    
  3. 安装完成后,重启 Windows Terminal。

  4. 如果你想更换主题,可以在 ~/.zshrc 文件中修改 ZSH_THEME 的值,然后重启 Windows Terminal 查看效果。

  5. 如果你想安装插件,可以把插件下载到 $ZSH_CUSTOM/plugins 目录,再在 ~/.zshrc 中启用它,然后重启 Windows Terminal。

安装 zsh-autosuggestions 插件

推荐一个插件:zsh-autosuggestions,它会根据历史命令在输入时给出灰色的建议,按 → 即可采纳。

  1. 把插件克隆到 Oh My Zsh 的自定义插件目录(注意目标路径要带上插件名):

    1
    
    git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
    
  2. 编辑 ~/.zshrc 文件,在 plugins 中添加 zsh-autosuggestions:

    1
    2
    3
    
    nano ~/.zshrc
    # 修改 plugins 配置项,添加 zsh-autosuggestions 插件,最终修改结果:
    plugins=(git zsh-autosuggestions)
    
  3. 让配置生效:重启 Windows Terminal,或者执行 source ~/.zshrc。

    安装插件并生效

  4. 最终效果:

    最终效果图

引用

由 Hugo 强力驱动