为什么用 Windows Terminal

用过 macOS iTerm2 或 Linux 上 GNOME Terminal 的人,再回到 Windows 自带的 conhost.exe(CMD 背后的黑窗口),会感觉这是一个时代的产品。Windows Terminal 主要解决了三个问题:

  • 多 Shell 标签:PowerShell、CMD、WSL Ubuntu、Azure Cloud Shell 在同一个窗口里并存;
  • GPU 加速渲染:滚动流畅,支持连字(ligatures)、Unicode、emoji;
  • 配置现代化:JSON 配置文件 + GUI 设置,主题/字体/快捷键都能精细调整。

再加上 PowerShell 7、WSL2 已经成为现代 Windows 命令行的标配,整套工具链的体验已经非常接近 macOS/Linux。

安装与基础设置

从 Microsoft Store 搜索 Windows Terminal 安装,或用 winget:

winget install Microsoft.WindowsTerminal

装好之后第一次打开,默认会有 PowerShell、CMD 两个 profile。如果装了 WSL,会自动出现 Ubuntu 的 profile。

设置入口:点击顶部下拉箭头 → 设置(或 Ctrl + ,)。第一次进入会推荐使用 JSON 配置文件——本节先用 GUI,后续再讲 JSON。

字体:选对字体体验翻倍

Windows Terminal 默认字体是 Cascadia Mono,但推荐换成支持连字 + 编程友好的字体

字体特点
Cascadia Code微软官方,支持连字,开箱即用
JetBrains MonoJetBrains 出品,连字最丰富
Fira Code经典程序员字体,连字齐全
MesloLGS NFPowerlevel10k 主题搭配字体
Maple Mono中文用户友好,中英文 2:1 宽度对齐

在设置 → 外观 → 字体里切换。建议字重 Regular + 字号 13~14,长时间看不累。

配色方案

Windows Terminal 内置了多套配色:

  • Campbell Powershell:默认;
  • One Half Dark / Light:Vim 经典配色,深色模式好看;
  • Solarized Dark / Light:程序员熟悉的色温;
  • Tango Dark / Light:经典 GNOME 风;
  • Dracula:紫色调,网红款。

喜欢更丰富的可以选择 windowsterminalthemes.dev,里面聚合了大量社区主题,复制 JSON 粘贴到 settings.json 即可。

每个 Profile 的独立配置

Windows Terminal 把每个 Shell(PowerShell、CMD、WSL)都视为一个 profile,可以独立配置:

  • 启动目录;
  • 字体和字号;
  • 配色;
  • 背景图(支持透明度);
  • 图标(侧边栏显示);
  • 命令行参数(如 -NoExit -Command "...")。

我的 PowerShell profile 通常配置:

  • 启动目录:D:\workspace
  • 字体:JetBrains Mono Regular 13;
  • 配色:One Half Dark;
  • 背景:透明 + 模糊;
  • 图标:PowerShell 官方图标。

JSON 配置:settings.json 详解

虽然 GUI 已经能配大部分内容,但精细定制还是要靠 settings.json。位置:

%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

典型结构:

{
  "profiles": {
    "defaults": {
      "font": { "face": "JetBrains Mono", "size": 13 },
      "colorScheme": "One Half Dark",
      "useAcrylic": true,
      "acrylicOpacity": 0.85
    },
    "list": [
      {
        "guid": "{...}",
        "name": "PowerShell",
        "commandline": "pwsh.exe",
        "startingDirectory": "D:\\workspace"
      },
      {
        "guid": "{...}",
        "name": "Ubuntu",
        "commandline": "wsl.exe -d Ubuntu",
        "icon": "C:\\path\\to\\ubuntu.png"
      }
    ]
  },
  "schemes": [
    {
      "name": "Custom Dark",
      "background": "#1e1e1e",
      "foreground": "#d4d4d4",
      "cursorColor": "#ffffff"
    }
  ]
}

GUI 里改设置会写到这个文件,所以两套方式是同步的。建议在编辑器(Sublime Text)里改 JSON,版本控制 + diff 友好。

分屏:Panels 模式

Windows Terminal 支持水平 / 垂直分屏,在一个窗口里同时跑多个 Shell。

默认快捷键:

  • Alt + Shift + D:水平分屏;
  • Alt + Shift + Plus:垂直分屏;
  • Alt + 方向键:在分屏间切换焦点。

分屏场景:左边看日志,右边执行命令;上边跑服务器,下边调试客户端。

PowerShell 7:值得切换

Windows 自带的 PowerShell 5.x 是基于 .NET Framework 的老版本,性能和功能都比 PowerShell 7(基于 .NET Core)弱一截。推荐安装 PowerShell 7:

winget install Microsoft.PowerShell

PowerShell 7 的优势:

  • 跨平台(Linux、macOS 也能用);
  • 性能大幅提升(启动速度 ~3 倍);
  • 支持 ????= 等现代运算符;
  • 更好的错误信息;
  • 原生支持 for_each -Parallel 并行处理。

在 Windows Terminal 里把 PowerShell profile 的命令行改成 pwsh.exe 即可使用 7。

SSH 与远程开发

Windows Terminal 把 SSH 连接做成 profile:

  1. 设置 → 新增 profile;
  2. 命令行:ssh user@host
  3. 图标:放一张服务器 PNG。

这样侧边栏会有一个"我的服务器"图标,点开直接连。如果配了 SSH config(在 ~/.ssh/config 里),多个服务器可以分得很清楚。

Git Bash 集成

装了 Git for Windows 后,会有一个 Git Bash profile。配置建议:

  • 命令行:"C:\\Program Files\\Git\\bin\\bash.exe" --login -i
  • 图标:Git 官方图标;
  • 配色:One Half Dark 或 Solarized Dark。

Git Bash 的体验很接近 Linux,配上 oh-my-bash 还能拿到漂亮的提示符和补全。

常用快捷键

快捷键作用
Ctrl + Shift + T新建标签
Ctrl + Tab切换标签(可视化选择)
Ctrl + Shift + W关闭当前标签
Ctrl + Shift + 1/2/3切换到指定 profile
Alt + Shift + D水平分屏
Alt + Shift + +垂直分屏
Alt + 方向键分屏间切换焦点
Ctrl + Shift + 滚轮调字号
Ctrl + ,打开设置
Ctrl + Shift + F搜索

这些快捷键全部可以在 settings.jsonkeybindings 里自定义重映射。

和其他工具的协作

Windows Terminal + Clink + PowerShell 7 + WSL 构成了我日常的命令行工作流:

  • 在 Everything 里搜到目标文件 → 复制路径 → 切到 Terminal → cd 进去;
  • CMD 偶尔还要用,配 Clink 增强体验;
  • 需要 Linux 工具(grep、awk、sed)时切 WSL;
  • 需要 SSH 连服务器时,直接在 Terminal profile 选目标。

总结

Windows Terminal 让 Windows 命令行体验第一次真正现代化。它不只是一个"更漂亮的 CMD",而是一个把 PowerShell、CMD、WSL、SSH 都统一起来的容器。

如果你还在裸用 conhost.exe 或 cmd.exe,强烈建议花一小时把 Windows Terminal 装好、配好——之后打开命令行就不会想回到过去。