devAlice
← Windows

Windows Terminal 配置 — 标签页 · 分屏 · WSL/PowerShell + Oh My Posh

让 Windows Terminal 媲美 macOS iTerm。用一个 settings.json 锁定 profiles / 快捷键 / 主题。

Windows 开发从 Windows Terminal 开始。将 WSL、PowerShell 和命令提示符作为标签页和分屏整合在一个窗口中,把整套配置固化进一个 JSON 文件(settings.json)。一次配置到位,体验几乎等同于 macOS iTerm + tmux。

我认为 Windows Terminal 的核心价值不在于外观,而在于把多个 shell 环境统一到单一入口。以前开发者要在多个终端窗口间切换;如今通过 settings.json 把 WSL、PowerShell、命令提示符统一管理,由于那个统一入口,上下文切换成本大幅降低。

本指南目标环境为 Windows 11 / Windows Terminal 1.21+,是完成 Windows 初始设置WSL 调优 后的日常终端精调步骤。

TL;DR

  1. 从微软应用商店安装 Windows Terminal(Win11 内置)
  2. Ctrl+,(或 ▼ → Settings)→ 进入 JSON 编辑模式
  3. 下载本指南的 settings.example.json 并按你的机器修改
  4. JetBrains Mono 字体 + 深色主题 + 亚克力透明效果
  5. Oh My Posh 美化 PowerShell 提示符

前置条件

  • Windows 11(10 也可以;部分亚克力效果略有差异)
  • 已安装 WSL2 — WSL 调优
  • (可选)PowerShell 7(winget install Microsoft.PowerShell

下载 settings.json

devAlice 推荐的基准配置——粘贴你机器的 GUID 就能用。

settings.json
# 1. 下载
Invoke-WebRequest `
  -Uri https://devalice.jaceclub.com/assets/windows/windows-terminal-setup/settings.example.json `
  -OutFile settings.json
 
# 2. 验证 SHA-256(Windows PowerShell)
Get-FileHash settings.json -Algorithm SHA256
# 预期(Hash):BBDEBB16B68F5BBD9041DBE4FEFEC8BA5F30B497325F2A11B922C1DAEDB8525F
# (lowercase: bbdebb16b68f5bbd9041dbe4fefec8ba5f30b497325f2a11b922c1daedb8525f)
 
# 3. 检查内容
notepad settings.json
 
# 4. 复制到实际位置(Windows Terminal Stable)
$dst = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
Copy-Item settings.json $dst -Force

请将四个 guid 字段替换为你机器的实际值。打开 Windows Terminal 一次,从菜单中查看自动生成的 GUID。


1. 安装 Windows Terminal — 1 分钟

Win11 内置。否则:

winget install Microsoft.WindowsTerminal

Win + T 或开始菜单 → 「Terminal」打开。

默认快捷键(配置前)

按键操作
Ctrl+,设置
Ctrl+Shift+T新建标签页
Ctrl+Tab下一个标签页
Ctrl+Shift+W关闭标签页
Alt+Shift++向右分屏
Alt+Shift+-向下分屏

2. 直接编辑 settings.json — 5 分钟

GUI 有局限,直接用 JSON。

Ctrl+,(Settings)→ 左下角 ⚙ Open JSON file → settings.json 在你的默认编辑器中打开。

路径:

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

Windows Terminal Preview 在 Microsoft.WindowsTerminalPreview_... 下使用相同路径,但文件不同。

五个关键设置

{
  "$schema": "https://aka.ms/terminal-profiles-schema",
 
  // 默认 profile(GUID)
  "defaultProfile": "{2c4de342-...}",  // 例如 Ubuntu WSL
 
  // 选中自动复制——iTerm 风格
  "copyOnSelect": true,
  "copyFormatting": "none",  // 仅纯文本(不含颜色/格式)
 
  // 主题
  "theme": "dark"
}

3. Profiles — WSL + PowerShell 7 + 隐藏 — 10 分钟

3.1 Ubuntu(WSL)Profile

{
  "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",  // 你机器的实际值
  "name": "Ubuntu (WSL)",
  "source": "Windows.Terminal.Wsl",
  "commandline": "wsl.exe -d Ubuntu",
  "startingDirectory": "//wsl$/Ubuntu/home/%USERNAME%",
  "colorScheme": "One Half Dark",
  "icon": "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png"
}

startingDirectory 指向 WSL home,每次新建标签页都从 ~/ 开始。

3.2 PowerShell 7 Profile

{
  "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",  // 你机器的实际值
  "name": "PowerShell 7",
  "commandline": "pwsh.exe -NoLogo",
  "startingDirectory": "%USERPROFILE%",
  "colorScheme": "Campbell Powershell",
  "icon": "ms-appx:///ProfileIcons/pwsh.png"
}

-NoLogo 隐藏 PowerShell 欢迎横幅,每次不用看到它。

3.3 隐藏不用的 Profile

如果你不用命令提示符、Azure Cloud Shell 或 Windows PowerShell(5.1):

{
  "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
  "name": "Windows PowerShell",
  "hidden": true
}

4. 字体 + 主题 — 5 分钟

4.1 安装 JetBrains Mono

winget install JetBrains.JetBrainsMono
# 或:scoop bucket add nerd-fonts; scoop install JetBrainsMono-NF

安装后需注销/重新登录(刷新字体缓存)。

4.2 应用字体默认设置

"profiles": {
  "defaults": {
    "fontFace": "JetBrains Mono",
    "fontSize": 12,
    "fontWeight": "normal",
    "useAcrylic": true,
    "acrylicOpacity": 0.85,
    "cursorShape": "filledBox",
    "antialiasingMode": "cleartype",
    "padding": "10",
    "scrollbarState": "hidden",
    "snapOnInput": true,
    "historySize": 50000
  },
  // 列表...
}

defaults 应用于所有 profile,各 profile 可单独覆盖。

4.3 额外主题(可选)

schemes 数组中添加调色板。从 Windows Terminal Themes 复制 JSON。


5. 快捷键 — 模仿 Mac 标准 — 5 分钟

添加到 actions。可下载的配置资产已包含:

"actions": [
  { "command": "find",                                       "keys": "ctrl+shift+f" },
  { "command": "paste",                                       "keys": "ctrl+shift+v" },
  { "command": "copy",                                        "keys": "ctrl+shift+c" },
  { "command": { "action": "splitPane", "split": "right" }, "keys": "alt+shift+plus" },
  { "command": { "action": "splitPane", "split": "down"  }, "keys": "alt+shift+minus" },
  { "command": "closePane",                                   "keys": "ctrl+shift+w" },
  { "command": { "action": "moveFocus", "direction": "left"  }, "keys": "alt+left" },
  { "command": { "action": "moveFocus", "direction": "right" }, "keys": "alt+right" },
  { "command": { "action": "newTab" },                       "keys": "ctrl+shift+t" },
  { "command": { "action": "nextTab" },                      "keys": "ctrl+tab" }
]

对从 iTerm / Terminal.app 迁移过来的用户非常自然。


6. Oh My Posh — 美化 PowerShell 提示符 — 10 分钟

PS C:\Users\u> 信息量太少。添加 git 分支、退出码、缩短的路径。

6.1 安装

winget install JanDeDobbeleer.OhMyPosh

打开新终端。

6.2 在 PowerShell Profile 中应用

notepad $PROFILE
# 如不存在:New-Item -Path $PROFILE -ItemType File -Force

内容:

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression

在新 PowerShell 窗口中立即生效。

6.3 更换主题

Get-PoshThemes              # 预览所有主题
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\powerlevel10k_rainbow.omp.json" | Invoke-Expression

将选定主题保存到 $PROFILE 以持久化。

6.4 在 WSL 的 bash/zsh 中应用(可选)

# 在 WSL bash/zsh 内
curl -s https://ohmyposh.dev/install.sh | bash -s
echo 'eval "$(oh-my-posh init bash --config ~/.poshthemes/jandedobbeleer.omp.json)"' >> ~/.bashrc

7. 日常使用模式

7.1 快速分屏 + 不同命令

Alt+Shift++ 向右分屏 → 新面板运行 wsl -d Ubuntu。左边是 PowerShell,右边是 WSL——Mac iTerm + tmux 的感觉。

7.2 WSL 内使用 tmux

Windows Terminal 只做窗口分割——真正的会话管理(分离/重连)在 WSL 内的 tmux 中:

# 在 WSL bash 中
sudo apt install tmux
tmux new -s dev          # 新建会话
# 工作,然后 Ctrl+B → D(分离)
tmux attach -t dev       # 重新连接

关闭 Windows Terminal 不会终止 tmux 会话。

7.3 将 settings.json 保存到 Git

$src = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
$dst = "$HOME\dotfiles\windows-terminal\settings.json"
mkdir "$HOME\dotfiles\windows-terminal" -ErrorAction SilentlyContinue
Copy-Item $src $dst -Force
cd "$HOME\dotfiles"
git add windows-terminal/settings.json
git commit -m "feat: windows terminal settings"

在新机器上反向复制,即可瞬间同步。


8. 故障排查

字体未生效

安装 JetBrains Mono 后必须刷新字体缓存。注销/重新登录或重启。

亚克力透明效果消失

Windows 11 在省电模式透明效果关闭时会禁用亚克力效果。Settings → 个性化 → 颜色 → 开启透明效果。

WSL profile startingDirectory 被忽略

必须以 //wsl$/... 开头(两个正斜杠)。\\wsl$\\... 在某些环境中会失效。

PowerShell 7 提示符图标乱码

部分 Oh My Posh 主题需要 Nerd Font。切换到 Nerd 变体字体:

winget install JetBrains.JetBrainsMono   # 基础版
# Nerd Font 变体通过 https://www.nerdfonts.com/ 或 scoop 安装

下一步

参考资料

更新日志

  • 2026-05-12 — 初稿(devAlice M2 seed expansion)