从 cmd 到 Claude:我把 Windows Terminal 改成了 AI 开发台
Windows Terminal 自定义友好用于claude code
适用版本:Windows Terminal 1.24+ | Windows 10/11 | PowerShell 5.1|claude code使用 / 7+
目录
- 为什么定制 WT?
- 方案总览
- 第一步:默认 Profile 改为 PowerShell
- 第二步:给 PowerShell 加管理员提权
- 第三步:右键菜单全局注入(4 处)
- 第四步:拖拽选中文本自动复制(类 WezTerm)
- 第五步:经典复制粘贴快捷键
- 完整 settings.json 参考
- 一键卸载脚本
- 常见问题与排错

1. 为什么定制 WT?
Windows Terminal(以下简称 WT)是 Windows 上最强大的终端模拟器,但开箱即用的状态有几个痛点:
| 痛点 | 默认行为 | 定制后 |
|---|---|---|
| 默认 shell | cmd.exe | Windows PowerShell(5.1) |
| 右键菜单 | 原生 cmd 风格 | 一键管理员权限打开 |
| 复制操作 | 必须 Ctrl+C 或右键菜单 | 拖动选中文本即复制(WezTerm 体验) |
| 快捷键 | 只有 Ctrl+C/V | 加 Ctrl+Insert / Shift+Insert |
2. 方案总览
本次定制共涉及以下文件:
| 文件路径 | 作用 |
|---|---|
| %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json | WT 主配置 |
| HKCU:\Software\Classes\Directory\Background\shell\OpenInWindowsTerminal | 空白处右键 |
| HKCU:\Software\Classes\Directory\shell\OpenInWindowsTerminal | 文件夹右键 |
| HKCU:\Software\Classes*\shell\OpenInWindowsTerminal | 文件右键 |
| HKCU:\Software\Classes\Drive\shell\OpenInWindowsTerminal | 驱动器右键 |
核心原理:WT 是 UWP 应用,Start-Process -Verb runas wt.exe 会因 AppContainer 沙箱拒绝(0x80070005)。正确做法是在 settings.json 的 profile 内部配置 "elevate": true,让 WT 通过 ShellExecuteExW(..., "runas", "powershell.exe", ...) 从内部启动 PowerShell,这样只弹一次 UAC 且进程关系正确。
3. 第一步:默认 Profile 改为 PowerShell
WT 默认打开的是 cmd(GUID {0caa0dad-35be-5f56-a8ff-afceeeaa6101}),改为 PowerShell 的 GUID:
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
PowerShell Profile 的 GUID 固定为 {61c54bbd-c2c6-5271-96e7-009a87ff44bf},对应:
{
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"hidden": false,
"name": "Windows PowerShell"
}
如果你装的是 PowerShell 7(pwsh.exe),把 commandline 改为对应路径,GUID 不变。
4. 第二步:给 PowerShell 加管理员提权
关键配置:在 PowerShell profile 节点内加入 "elevate": true:
{
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"elevate": true,
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"hidden": false,
"name": "Windows PowerShell"
}
生效效果:
- 直接运行
wt.exe→ 弹一次 UAC → PowerShell Tab 以管理员身份启动 - 右键菜单打开 WT → 弹一次 UAC → PowerShell Tab 以管理员身份启动
为什么不直接 runas wt.exe?
UWP 应用(WT 打包为 MSIX/AppX)存在 AppContainer 沙箱,直接对 wt.exe 做 Start-Process -Verb runas 会返回 ERROR_ACCESS_DENIED (0x80070005)。正确路径是让 WT 自身通过 ShellExecute 的 runas verb 提权其子进程(PowerShell),而非提权 wt.exe 本身。
5. 第三步:右键菜单全局注入(4 处)
注册表文件:wt_context_menu_admin.reg
Windows Registry Editor Version 5.00
; ---- 1) 右键空白区域 ----
[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\OpenInWindowsTerminal]
@="Open in Windows Terminal (Admin)"
"Icon"="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\",0"
[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\OpenInWindowsTerminal\command]
@="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\" -d \"%V\""
; ---- 2) 右键文件夹 ----
[HKEY_CURRENT_USER\Software\Classes\Directory\shell\OpenInWindowsTerminal]
@="Open in Windows Terminal (Admin)"
"Icon"="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\",0"
[HKEY_CURRENT_USER\Software\Classes\Directory\shell\OpenInWindowsTerminal\command]
@="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\" -d \"%1\""
; ---- 3) 右键文件(打开所在文件夹)----
[HKEY_CURRENT_USER\Software\Classes\*\shell\OpenInWindowsTerminal]
@="Open Containing Folder in Terminal (Admin)"
"Icon"="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\",0"
[HKEY_CURRENT_USER\Software\Classes\*\shell\OpenInWindowsTerminal\command]
@="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\" -d \"%1\\..\""
; ---- 4) 右键驱动器 ----
[HKEY_CURRENT_USER\Software\Classes\Drive\shell\OpenInWindowsTerminal]
@="Open in Windows Terminal (Admin)"
"Icon"="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\",0"
[HKEY_CURRENT_USER\Software\Classes\Drive\shell\OpenInWindowsTerminal\command]
@="\"C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\" -d \"%V\""
参数说明
| 参数 | 含义 |
|---|---|
-d "%V" |
在当前目录(虚拟路径)打开,Directory Background / Drive 用此 |
-d "%1" |
完整绝对路径,Directory / Drive 也可 |
"%1\\.." |
文件的父目录,即"打开所在文件夹" |
应用方法
regedit.exe /s wt_context_menu_admin.reg
# 刷新资源管理器
Get-Process explorer | Stop-Process -Force; Start-Process explorer.exe
6. 第四步:拖拽选中文本自动复制(类 WezTerm)
WT 内置此功能,只需一行配置:
"copyOnSelect": true,
"copyFormatting": "none"
行为对比:
| 操作 | 默认 | 开启 copyOnSelect 后 |
|---|---|---|
| 鼠标拖动选中文本 | 文字反色,剪贴板不动 | 文字进剪贴板 |
| Ctrl+C / Ctrl+Insert | 复制选中 | 同上 |
| 右键 / Shift+Insert 粘贴 | 粘贴 | 直接得到选中内容 |
copyFormatting 取值:
| 值 | 效果 |
|---|---|
"none" |
纯文本(推荐,不带 ANSI 色码) |
"html" |
带 ANSI 颜色转为 HTML |
"rtf" |
带 ANSI 颜色转为 RTF |
"all" |
同时复制纯文本 + HTML + RTF |
7. 第五步:经典复制粘贴快捷键
在 keybindings 数组中添加:
"keybindings": [
{
"id": "Terminal.CopyToClipboard",
"keys": "ctrl+insert"
},
{
"id": "Terminal.PasteFromClipboard",
"keys": "shift+insert"
}
]
完整快捷键对照:
| 按键 | 功能 |
|---|---|
| 拖动选中 | 自动复制(copyOnSelect) |
| Ctrl+C | 复制选中 |
| Ctrl+Insert | 复制选中(传统键) |
| Ctrl+V | 粘贴 |
| Shift+Insert | 粘贴(传统键) |
| Ctrl+Shift+F | 搜索 |
| Alt+Shift+D | 复制当前 Pane |
8. 完整 settings.json 参考
以下是本次定制涉及的完整 settings.json 关键段落(不含 schemes / 完整 profiles list):
{
"$help": "https://aka.ms/terminal-documentation",
"$schema": "https://aka.ms/terminal-profiles-schema",
"actions": [],
"copyFormatting": "none",
"copyOnSelect": true,
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"keybindings": [
{
"id": "Terminal.CopyToClipboard",
"keys": "ctrl+c"
},
{
"id": "Terminal.FindText",
"keys": "ctrl+shift+f"
},
{
"id": "Terminal.PasteFromClipboard",
"keys": "ctrl+v"
},
{
"id": "Terminal.DuplicatePaneAuto",
"keys": "alt+shift+d"
},
{
"id": "Terminal.CopyToClipboard",
"keys": "ctrl+insert"
},
{
"id": "Terminal.PasteFromClipboard",
"keys": "shift+insert"
}
],
"profiles": {
"defaults": {
"colorScheme": "Solarized Light (modified)",
"font": {
"face": "Consolas",
"size": 10
}
},
"list": [
{
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"elevate": true,
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"hidden": false,
"name": "Windows PowerShell"
}
]
}
}
9. 一键卸载脚本
如果想恢复原始状态,执行以下 wt_uninstall.reg:
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\OpenInWindowsTerminal]
[-HKEY_CURRENT_USER\Software\Classes\Directory\shell\OpenInWindowsTerminal]
[-HKEY_CURRENT_USER\Software\Classes\*\shell\OpenInWindowsTerminal]
[-HKEY_CURRENT_USER\Software\Classes\Drive\shell\OpenInWindowsTerminal]
然后在 settings.json 中还原:
"copyOnSelect": false- 删除
"elevate": true "defaultProfile"改回 cmd 的 GUID- 删除 ctrl+insert / shift+insert 两条 keybinding
10. 常见问题与排错
Q1:右键菜单点了没反应
检查注册表是否写入成功:
Get-ItemProperty 'HKCU:\Software\Classes\Directory\Background\shell\OpenInWindowsTerminal\command'
确认 (默认) 值指向 wt.exe -d “%V”。
Q2:0x80070005 ERROR_ACCESS_DENIED
说明尝试用 Start-Process -Verb runas wt.exe 提权了 WT 本身(错误路径)。
正确做法是 settings.json 里加 "elevate": true,不要在外部包装 launcher。
Q3:WT 进程卡死(admin 进程无法 kill)
这是因为 WT 由管理员启动,普通 shell 无权终止。
解决方法(任选一):
- 重启电脑(最简单)
- 弹一次 UAC,用管理员 PowerShell 执行:
taskkill /F /IM WindowsTerminal.exe - 不想每次都 admin:去掉
"elevate": true,右键菜单改走 launcher
Q4:想保留普通(非管理员)右键菜单
可以额外创建一条 “Open in Windows Terminal”(不带 Admin):
[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\OpenInWindowsTerminalNormal]
@="Open in Windows Terminal"
"Icon"="\"C:\\...\\wt.exe\",0"
[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\OpenInWindowsTerminalNormal\command]
@="\"C:\\...\\wt.exe\" -d \"%V\""
Q5:copyOnSelect 和鼠标拖动滚动冲突
在 profiles.defaults 里可以加:
"scrollbarState": "hidden",
"mouseScrollCycling": false
附:全部修改汇总表
| 序号 | 修改项 | 位置 | 值 |
|---|---|---|---|
| 1 | 默认 Profile | settings.json | "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}" |
| 2 | 管理员提权 | settings.json profile | "elevate": true |
| 3 | 右键空白处 | HKCR | wt.exe -d "%V" |
| 4 | 右键文件夹 | HKCR | wt.exe -d "%1" |
| 5 | 右键文件 | HKCR | wt.exe -d "%1\\.." |
| 6 | 右键驱动器 | HKCR | wt.exe -d "%V" |
| 7 | 自动复制 | settings.json | "copyOnSelect": true |
| 8 | 纯文本复制 | settings.json | "copyFormatting": "none" |
| 9 | Ctrl+Insert | settings.json | Terminal.CopyToClipboard |
| 10 | Shift+Insert | settings.json | Terminal.PasteFromClipboard |
本文档对应 Windows Terminal 1.24.11321.0,Windows 10/11 通用。
更多推荐


所有评论(0)