中文
构建 Windows / macOS 统一终端环境

构建 Windows / macOS 统一终端环境

在 Windows 和 macOS 上均可运行的跨平台终端环境搭建指南

前言


由于最近升级了MacBook Air,我感到有必要重新配置系统环境。

虽然从M1到M5的性能提升令人满意,但在尝试恢复原有使用环境时,我发现这需要花费大量精力,因此决定借此机会将整个过程记录下来,以便日后能更轻松地进行配置。

[2026 Mac 终端完美配置(Ghostty + Starship + AI 编程环境)](https://blog.dnd.ac/settings-mac-terminal-2026/

)


在这个过程中,给我留下深刻印象的文档就是该链接中的资料,作者将整洁且精心配置的环境以脚本形式留存下来,对我帮助很大。

先说结论,最终我成功构建了如下形式的终端环境:


。其内部架构主要基于 Wezterm + Nushell + LazyVim 进行配置。


您可以在 [Github 链接](https://www.github.com/TraceofLight/global-terminal-settings

) 中查看完整的配置指南,该指南旨在帮助您在 Windows 和 MacOS 上构建完全一致的环境。

目标设定


该项目的目标非常明确:

  • 在 Windows / MacOS 上使用相同的终端环境

  • 基于 LazyVim 的编辑器能够无障碍运行

  • 与现有使用环境差异不大

  • 使用 tmux 等多窗口管理工具时


不会遇到困难 为了实现这些目标,我着手进行了相关工作。

实施过程


首先需要选择技术方案。目前终端模拟器的趋势是具备GPU加速渲染能力的GUI工具,这类工具之所以备受青睐,正是因为其运行速度快且支持自定义主题。正如上文链接所示,构建终端环境需要这些特性,因此我最终选择了其中的Wezterm。


  1. 终端模拟器

    由于需要在跨平台环境下提供一致的用户体验,我认为具备成熟生态系统的跨平台终端模拟器主要有Alacritty和Wezterm。追求极简风格的Alacritty在扩展性上略显不足,因此最终选择了Wezterm。它内置多路复用器也是一大优势。

  2. Shell

    为了确保在两个平台上提供一致的使用体验,我最初计划统一使用支持 Unix 命令的环境,因此决定在 Windows 上使用 bash,在 macOS 上使用 zsh。但随后遇到了一些问题,最终方案是基于 Nushell 进行统一。

  3. LazyVim

    实际上,这部分我原本就已使用相关工具,且在大部分环境下都能无缝集成,因此并不困难。 虽然原本使用的是SpaceVim,但该工具已[停止维护](https://wsdjeg.net/why-spacevim-is-archived/

),且我转用LazyVim已有段时间。加上我主要使用IDE,LazyVim仅作为辅助工具,因此安装过程相当顺利。

遇到的问题

在此过程中存在几个问题,其中两个都与转用Nushell有关。

  1. 在 Windows 上,bash 的运行速度慢得令人难以忍受

    事实上,后来确认这似乎是意料之中的结果。我发现,在 Windows 环境下,为了处理 POSIX 风格的操作,系统会额外增加一层兼容性处理机制。因此,虽然也曾考虑过切换到 WSL2 环境,但那最终与直接使用 Linux 并无二致,所以被排除在外。

    -> 为解决这一问题,引入了 nushell 作为工具。考虑到了它与 Unix 命令有大量兼容之处、基于 Rust 设计因此在性能上有所保障,以及在 macOS 上也能进行相同的环境配置。

  2. Windows 版 nushell 中 navi 插件无法运行

    navi是一款用于参考终端命令速查表的插件。虽然使用频率不高,但如果该工具的功能完全无法运行会带来不便,因此我们尝试了多种解决方法。最终,我们通过分叉navi来解决该问题,并改用重新构建的插件。

    • 原因:即使用户shell发生变更,内部仍会应用基于bash的语法,导致在使用nushell时出现故障

    • 解决方案:不再通过 shellscript 命令处理该部分,而是通过以下方式移除相关依赖:在原本需要使用 wget 的地方改用 Rust HTTP 客户端,在原本需要使用 bash 的地方改用 pwsh,以此消除内部辅助程序对 bash 的依赖

    • [详细修改记录](https://github.com/TraceofLight/navi/tree/fix/nushell-usability

)

结论

开发人员使用终端的频率相当高,如果环境能够统一,使用起来自然会更方便。因此,支持跨平台且保持一致使用体验的 JetBrains IDE 难道不具有优势吗?同样地,如果自己在终端方面追求的是在各种环境下保持统一的使用体验,那么尝试这种方式似乎也不错。

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0