说实话,我一开始就是被系统自带的终端逼疯的。平常用 CMD 处理点小脚本还行,一跑开发工具、日志、Git 命令,那个黑底白字和各种刺眼的配色就让人头大;系统自带的 PowerShell 5.1 稍微强一点,但默认窗口和交互体验还是让人一言难尽。后来我换成了 Windows Terminal + PowerShell 7,整套配置折腾下来,工作效率和心情都好了不止一点。这篇就把完整的配置过程、选型思路、外观优化和踩坑经历整理出来,想折腾 Windows 终端的同学可以参考,已经装了但用得别扭的,也可以对照排查一下。
严格来说,Windows Terminal 是一个现代化的终端宿主程序,负责窗口、标签、渲染、快捷键这些外壳能力;PowerShell 7 是一个跨平台的 shell 和脚本环境,负责命令执行、脚本逻辑和对象管道。两者搭配,正好互补:一个解决“看起来舒服、用起来顺手”,一个解决“命令跑得快、脚本写得好”。这次配置的目标很直接:让终端变好看、变快、变得更顺手,顺便把平时重复输入的命令都变成一键调用。
1. 先搞清楚这套组合解决了什么问题
1.1 为什么不用 CMD 和系统自带的 PowerShell
很多朋友第一次接触终端,用的都是 CMD。CMD 其实不差,但放到今天的开发场景里就有不少尴尬:不支持标签页,开多个窗口只能靠 Alt+Tab 来回切;文本渲染全靠 CPU 硬扛,跑大日志时屏幕刷新能明显感觉到卡顿;配色和字体自定义能力几乎为零,看久了眼睛确实累。
系统自带的 Windows PowerShell 5.1 比 CMD 强不少,有对象管道、有完善的脚本能力,但它仍然跑在传统的控制台宿主上。传统 ConHost 有很多历史包袱,比如对 Unicode 字符支持不够好、透明效果依赖系统设置、多窗口管理基本靠手动。PowerShell 5.1 本身还基于 .NET Framework,很多新模块和语法已经跟不上了。
Windows Terminal 相当于给所有 shell 换了一个全新的外壳。它用 GPU 加速渲染文本,滚动日志和大量输出时明显更流畅;支持多标签页和分栏,一个窗口就能管理 PowerShell、CMD、WSL 等多个 shell;配置集中在一个 JSON 文件里,备份、同步、版本管理都很方便。PowerShell 7 则把脚本运行环境升级到了现代 .NET,启动速度更快,对 UTF-8 和各种输出格式的兼容性更好,命令行为也更符合现在开发者的习惯。
1.2 这套组合适合谁
如果你是开发者,天天要敲 git、npm、docker、ssh 这类命令,这套组合几乎是刚需。标签页和分屏能同时开好几个项目,不用来回切换窗口。
如果你偏运维方向,经常要看日志、写批处理脚本、远程连接服务器,PowerShell 7 的对象管道和脚本调试能力会让操作顺畅很多。Windows Terminal 的搜索和颜色高亮,排查问题时也能省不少力。
就算你只是普通办公用户,受够了默认终端的丑样子,想找一个美观、字体清晰、能自定义颜色的终端,这套组合同样值得折腾。配置过程不需要很强的编程基础,照着改 JSON 就行,改坏了备份一恢复就回来了。
2. 安装与版本选择,别在第一步就踩坑
2.1 安装 Windows Terminal
Windows Terminal 的安装方式有好几种,我建议优先用应用商店,因为商店版本会自动更新,省去手动升级的麻烦。直接在商店里搜索“终端”,认准全名是 Windows Terminal 的那个稳定版,别装成 Terminal Preview。Preview 版本虽然能提前体验新功能,但偶尔会有小毛病,日常使用没必要。
也可以用 winget 命令行安装,适合公司电脑不方便开商店的场景。在任意终端里执行:
winget install --id Microsoft.WindowsTerminal -e如果 winget 不可用,就手动去官网或源码仓库下载最新稳定版安装包,双击安装就行。安装完之后,按 Win 键输入“终端”或者“Terminal”就能启动,验证版本可以直接在终端里执行:
wt --version需要注意的是,Windows 10 系统版本最好在 18362 以上,太老的版本跑 Windows Terminal 虽然能用,但新特性比如新版设置界面、背景亚克力效果可能会有缺失。Windows 11 倒是原生就带 Windows Terminal,但自带版本不一定是最新的,建议还是到商店里确认一下更新状态。
2.2 安装 PowerShell 7
系统自带的 Windows PowerShell 5.1 和 PowerShell 7 是两个东西,两者可以共存,互不干扰。5.1 的可执行文件是powershell.exe,7 的可执行文件是pwsh.exe。很多人装完 PowerShell 7 之后,打开终端发现还是旧的 5.1,就是因为启动的还是旧程序。
安装 PowerShell 7 最省事的方式是 winget:
winget install --id Microsoft.PowerShell -e或者从官网下载 MSI 安装包。安装到“加入 PATH”这一步时,建议勾选。安装完成后验证:
pwsh -v看到PowerShell 7.x.x这样的输出就说明装好了。接下来要让 Windows Terminal 默认启动就是 PowerShell 7,而不是老的 5.1。打开 Windows Terminal 设置,把“默认配置文件”改成 PowerShell,然后确认该配置文件的命令行是pwsh.exe,而不是powershell.exe。
2.3 配置文件到底在哪里
Windows Terminal 的配置不是图形界面点一点就完事的,核心是一个 JSON 文件。快速打开方式是在 Windows Terminal 里按Ctrl + ,,默认会用文本编辑器打开settings.json。文件路径一般藏在打包应用目录下,完整路径类似于:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_*\LocalState\settings.json我建议你记住Ctrl + ,这个快捷键就够了,不需要去记完整路径。需要备份的时候,直接把这个文件复制一份就行。
settings.json的核心结构主要有几块:
profiles:定义下拉菜单里能启动哪些 shelldefaults:所有 profile 的默认参数,比如字体、配色、透明度schemes:自定义配色方案的集合actions:快捷键绑定launch:控制启动行为
理解了这个结构,后面配置起来就有方向感了。
3. 外观配置实操,先让终端变得能看
3.1 配色方案的选择与自定义
Windows Terminal 默认提供的几个主题,说实话一般般。想自定义配色,只要在settings.json的schemes里加一段配置就行。
一个配色方案的结构大概是这样的:
{ "name": "My Dark Scheme", "background": "#282C34", "foreground": "#ABB2BF", "cursorColor": "#528BFF", "selectionBackground": "#3E4451", "colors": [ "#282C34", "#E06C75", "#98C379", "#E5C07B", "#61AFEF", "#C678DD", "#56B6C2", "#ABB2BF", "#5C6370", "#E06C75", "#98C379", "#E5C07B", "#61AFEF", "#C678DD", "#56B6C2", "#ABB2BF" ] }这里colors数组是十六个颜色,前八个对应普通色,后八个对应亮色。顺序是黑、红、绿、黄、蓝、洋红、青、白。background是背景色,foreground是默认文字颜色,cursorColor是光标颜色,selectionBackground是选中文字时的高亮背景色。
定义好之后,还要告诉终端去用它。在defaults里指定:
"defaults": { "colorScheme": "My Dark Scheme" }如果某个单独的 profile 里也设置了colorScheme,它会覆盖 defaults 里的值,这一点容易踩坑。比如你明明在 defaults 里写好了主题,但某个 shell 打开后颜色还是不对,多半是那个 profile 自己单独写过颜色方案。
我实际用下来比较舒服的一组深色配色参考如下,偏暗色系,不刺眼,长时间看代码和日志比较友好:
| 配置项 | 值 | 说明 |
|---|---|---|
| background | #1E1E1E | 纯深灰背景 |
| foreground | #D4D4D4 | 浅灰白前景 |
| cursorColor | #AEAFAD | 灰色光标 |
| selectionBackground | #264F78 | 选中文字的深蓝底色 |
| red | #CD3131 | 错误提示 |
| green | #0DBC79 | 成功状态 |
| yellow | #E5E510 | 警告 |
| blue | #2472C8 | 命令类型 |
| cyan | #11A8CD | 路径和链接 |
设置完保存文件,终端窗口会立即刷新,不用重启。
3.2 字体与光标配置
字体对终端颜值的影响非常大。等宽字体能让日志、代码、表格对齐,看起来清爽很多。Windows Terminal 默认自带的 Cascadia Code 系列字体就很不错,它和 Windows Terminal 是配套的,支持连字效果,箭头、比较运算符之类的字符会显示得更漂亮。想更花哨一点,可以安装带图标补全的等宽字体,比如 Nerd Font 系列,对状态栏、目录图标类字符支持更好。
字体设置在defaults里:
"defaults": { "fontFace": "Cascadia Code", "fontSize": 12, "lineHeight": 1.2 }字体大小和行高得看个人显示器分辨率。我 4K 显示器上用 14 号字,1080p 屏幕用 12 号字比较合适。行高默认是 1,建议调到 1.2 左右,日志密集时看起来没那么挤。
光标形状也是很多人忽略的细节。cursorShape支持bar、block、underscore、filledBox几种。我之前默认是方块光标,敲命令时经常看不清当前插入位置,改成bar竖线光标之后清爽多了:
"defaults": { "cursorShape": "bar" }背景透明和亚克力模糊是外观党最爱。配置参数是useAcrylic和opacity:
"defaults": { "useAcrylic": true, "opacity": 0.85 }useAcrylic开启模糊效果,opacity控制不透明度,0 到 1 之间。我建议把 opacity 放在 0.8 到 0.9 之间,不然文字叠在壁纸上很难看清。这个功能说实话好看大于实用,而且开启后 GPU 占用会稍微高一点,低配电脑要斟酌一下。
3.3 启动行为与默认目录
每天打开终端第一件事就是切目录?不如让终端直接落在工作目录里。在 profile 里配置startingDirectory:
{ "profiles": { "defaults": { "startingDirectory": "C:/Users/you/work" } } }注意 JSON 的反斜杠问题。Windows 路径在 JSON 里要么写成双反斜杠,比如"C:\\Users\\you\\work",要么像我这样全部用正斜杠,省心不少。
启动模式也值得设置。如果习惯全屏用终端,可以选maximized;想要窗口宽一点,可以用initialCols和initialRows设置初始列数和行数:
"launch": { "launchMode": "maximized", "initialCols": 120, "initialRows": 30 }设置完保存,新开的终端窗口就会按这个参数走了。
4. 快捷键与右键菜单,日常效率的提升
4.1 常用快捷键清单
Windows Terminal 默认快捷键已经覆盖大部分高频操作,我把最常用的列一下:
| 快捷键 | 功能 |
|---|---|
| Ctrl + Shift + T | 新标签页 |
| Ctrl + Shift + N | 新窗口 |
| Ctrl + Tab | 下一个标签 |
| Ctrl + Shift + Tab | 上一个标签 |
| Ctrl + Shift + W | 关闭当前标签 |
| Alt + Shift + D | 垂直分割窗格 |
| Alt + Shift + Minus | 水平分割窗格 |
| Ctrl + Shift + F | 搜索 |
| Ctrl + , | 打开设置文件 |
分屏是我最喜欢的功能,一边开着 PowerShell 执行命令,一边开着 vim 或日志文件,不用来回切换窗口。快捷键是Alt + Shift + 加减号,记忆方式很简单:D 代表 split down,Minus 代表 split horizontal,用几次就肌肉记忆了。
自定义快捷键在actions数组里配置。比如我想用Ctrl + Shift + 1直接启动 WSL:
"actions": [ { "command": { "action": "newTab", "commandline": "wsl.exe" }, "keys": "ctrl+shift+1" } ]改完保存就能生效。定义自己快捷键的时候,注意别跟默认快捷键冲突。比如默认里Ctrl + Shift + 1没占,但我之前试过映射到已经占用的组合,结果没反应,检查了半天才发现是冲突。
4.2 右键菜单集成
Windows Terminal 提供在文件夹右键菜单中直接打开的功能。在设置里的“启动”页面可以找到相关选项,开启后,在文件管理器的任意目录空白处点击右键,会看到“在终端中打开”的选项。
这个功能非常实用。以前我要进入项目目录,得先打开终端,再敲一大串cd路径,遇到深层目录非常痛苦。开启右键集成后,直接在项目文件夹里右键打开终端,默认工作目录就是当前文件夹,一步到位。
部分新版本还支持在系统右键菜单里增加“在终端中打开”的全局入口。如果设置里找不到这个开关,也可以通过 Windows 的开发者设置来开启。不过说实话,内置的文件夹右键集成已经够用了,没必要再折腾全局菜单。
4.3 把 Git Bash、WSL 加进同一个终端
Windows Terminal 最大的优势之一,就是能把多个 shell 集成到同一个窗口。安装 WSL 发行版之后,Windows Terminal 通常会自动检测到 WSL 的 profile,你只要在下拉菜单里切换就行,不用额外配置。
Git Bash 需要手动添加。安装 Git 后,通常配置文件路径在C:/Program Files/Git/bin/bash.exe。在profiles列表里新增一个 profile:
{ "name": "Git Bash", "commandline": "C:/Program Files/Git/bin/bash.exe", "icon": "C:/Program Files/Git/mingw64/share/git/git-for-windows.ico", "startingDirectory": "C:/Users/you/work" }保存后,下拉菜单里就会出现 Git Bash 选项。这样 PowerShell、CMD、Git Bash、WSL 全部在一个窗口内切换,效率非常高。
5. PowerShell 7 的核心配置
5.1 配置文件与初始化流程
PowerShell 的 profile 相当于 bash 的.bashrc,每次启动 PowerShell 时自动执行。可以通过$PROFILE变量查看当前用户的 profile 路径:
echo $PROFILE检查 profile 是否存在:
Test-Path $PROFILE如果返回 False,就手动创建:
New-Item -ItemType File -Path $PROFILE -Force然后编辑它,推荐用编辑器打开:
notepad $PROFILE我把 profile 当成一个“启动自检单”,里面一般放几类内容:默认目录、常用别名、自定义函数、PSReadLine 配置、环境变量。每加一条都写上注释,这样过段时间再回来整理也看得懂。
5.2 PSReadLine 增强体验
装完 PSReadLine 之后,PowerShell 的交互体验直接上一个档次。它提供语法高亮、历史命令预测提示、更好的历史搜索与多行编辑能力。
安装很简单:
Install-Module PSReadLine -Scope CurrentUser安装后在 profile 里启用核心配置:
Set-PSReadLineOption -PredictionSource HistoryAndPlugin Set-PSReadLineOption -PredictionViewStyle ListView Set-PSReadLineOption -EditMode Windows这里解释一下参数:
PredictionSource设置为HistoryAndPlugin,输入命令时,终端会根据历史记录和插件提供灰色预测文本,按右方向键直接接受,省去重复输入的长命令。PredictionViewStyle为ListView,预测结果会以下拉列表形式展示,比单行预测更直观。EditMode为Windows,保持和传统命令行一致的操作习惯。
实际使用中,最爽的场景是命令历史里敲过一遍的长命令。第二次再输入两三个字母,右侧直接出现完整命令,按一下方向键就出来了,手速快了不少。
提醒一点:Windows PowerShell 5.1 和 PowerShell 7 的 PSReadLine 模块版本可能不同,配置在 5.1 里生效不代表在 7 里也生效。建议两边都检查一下:
$PSVersionTable.PSVersion Get-Module PSReadLine如果版本不匹配,在两个版本的 PowerShell 里各执行一次安装命令即可。
5.3 常用别名与自定义函数
配置 profile 的另外一个乐趣,是打造属于自己的命令快捷键。我配置了一些常用别名,省去每次敲完整命令的麻烦:
Set-Alias -Name ll -Value Get-ChildItem Set-Alias -Name grep -Value Select-String Set-Alias -Name touch -Value New-Item Set-Alias -Name g -Value git这里注意,ll在 Linux 下很常见,但在 Windows 原生 PowerShell 里没有,所以要自己定义。touch也不是原生命令,定义成New-Item后,就能用touch a.txt快速创建文件了。
再分享几个实用函数。我经常要建目录并进入目录:
function mkcd($path) { New-Item -ItemType Directory -Path $path -Force Set-Location $path }用法:
mkcd C:/Users/you/work/newproject创建目录后自动进入,不用两条命令来回敲。
还有which函数,用来查看命令的真实路径:
function which($command) { Get-Command $command | Select-Object -ExpandProperty Source }调试环境变量时,这个函数很常用。比如想知道 python 命令到底指向哪里,直接:
which python5.4 环境变量管理
PowerShell 里修改当前会话的环境变量,直接操作$env:变量就行。比如把某个工具目录临时加入 PATH:
$env:PATH = "$env:PATH;C:/tools"但这样只对当前窗口有效。想永久生效,我一般在 profile 里添加:
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:/tools", "User")这样配置会写入用户环境变量。不过改完环境变量后,已经打开的终端不会自动刷新环境,需要新开窗口才生效。遇到路径找不到的情况,先重启终端再验证,避免误判。
6. 常见问题与踩坑记录
6.1 执行策略限制导致脚本无法运行
第一次在 PowerShell 里运行脚本时,可能会看到“此系统上禁止运行脚本”的报错。这是默认执行策略Restricted在作怪。解决办法:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserRemoteSigned表示本机创建的脚本可以直接运行,从网络上下载的脚本需要签名。这个策略兼顾安全和便利,不建议直接改成Bypass或Unrestricted,毕竟终端是个高权限环境。
6.2 中文乱码与编码问题
PowerShell 5.1 下遇到中文乱码很常见,控制台默认代码页和 UTF-8 不一致会导致输出乱码。可以临时切到 UTF-8:
chcp 65001PowerShell 7 对 UTF-8 的兼容性好很多,但仍建议把脚本文件统一保存为 UTF-8 编码。如果 settings.json 里的中文注释出现乱码,大概率是编辑器保存成了 GBK,改成 UTF-8 保存即可。
6.3 背景透明、亚克力效果不生效
设置了useAcrylic但窗口还是全不透明?先检查两件事:一是确认opacity有没有设置有效值,二是确认是不是在 defaults 层级写的。如果 defaults 里写了,但某个 profile 单独写了useAcrylic: false,后者会覆盖 defaults 里的配置。
老版本 Windows 10 上亚克力效果偶尔会失效,属于系统层面支持问题。想要透明效果但不要模糊,可以把useAcrylic设为false,只保留opacity,这样窗口是半透明的但没有毛玻璃效果,兼容性好一些。
6.4 启动速度慢
新装的系统加完一堆模块后,终端启动变慢是常见问题。排查思路是看 profile 里是不是加载了太多模块,或者每次启动都执行耗时命令。建议把不常用的模块改成延迟加载,也就是在第一次调用时再导入,而不是启动时全部加载。比如:
if (-not (Get-Module -Name SomeModule)) { Import-Module SomeModule }或者把耗时命令放到自定义函数里,用的时候再执行。另外,杀毒软件扫描pwsh.exe也会拖慢启动速度,不过一般影响不明显,不用太较真。
6.5 配置不生效的小问题
改了startingDirectory但打开 WSL 后目录还是回家目录?这是因为 WSL 启动时会自动切换到当前用户的 home 目录。解决办法是在 WSL profile 的 commandline 里追加启动后执行cd的指令,或者在 WSL 侧面的.bashrc里添加目录切换。
还有一个容易忽略的点:如果 Windows Terminal 以管理员权限运行,而当前打开的文件管理器不是管理员权限,你在文件管理器里右键“在终端中打开”可能会提示无法访问,或者打开的终端不在目标目录。这种操作层面的权限不一致,遇到过好几次才知道。
6.6 快捷键冲突
自定义 actions 时,如果快捷键没反应,先看看是不是和系统全局快捷键或者 Windows Terminal 内置快捷键冲突。比如Ctrl + Shift + C默认是复制文本,你非要改成一个新命令,但另一个动作可能已经占用了同键。解决方法是打开settings.json,全局搜索这个按键,看看有几个动作绑定了它,删掉多余的那个就行。
配置折腾完,我个人还有一个小习惯:把settings.json和 PowerShell 的$PROFILE文件定期备份到自己的网盘和代码仓库里。这样换了新电脑,五分钟还原整个终端环境,不用重新调字体、重新加别名。
最后分享一点经验。这套配置看起来东西很多,其实核心就是两个文件:Windows Terminal 的settings.json负责外观和交互,PowerShell 的$PROFILE负责命令行体验。改任何东西之前,先备份这两个文件。改坏了再恢复,就不会把时间耗在排查细节上。另外,配置不用追求一次性完美,先用默认配置跑两周,遇到哪里不顺眼再改哪里,这样配出来的终端才是真正适合自己习惯的,而不是照搬别人的花架子。