如果你还在用Win10自带的cmd窗口写命令,我强烈建议你腾一下午时间,把Windows Terminal折腾明白。真不是小题大做——我第一次把工作环境从原生的PowerShell窗口切过来之后,最大的感受是:为什么没有早几年用上它。命令行这种每天要碰几十次的东西,窗口能不能透明、复制粘贴顺不顺手、字体渲染清不清晰,看起来都是小事,日积月累那就是巨大的时间损耗。这篇文章就是围绕Win10下的Windows Terminal展开的。我会从为什么要换、怎么安装、配置文件怎么改、配色怎么调、快捷键怎么用,再到我踩过的坑,全部过一遍。适合所有想在Windows 10上把终端用顺手的人,不管是刚接触命令行的新手,还是准备深度定制的老手,都能找到可以直接抄作业的部分。1. 为什么Win10用户需要一个像样的终端1.1 系统自带终端的历史包袱很多人觉得终端能用就行,但"能用"和"好用"之间的差距,在Windows上格外大。你打开cmd,看到的是一个固定尺寸的老式窗口:字体低DPI下模糊、高DPI下发虚,不能改透明度,复制粘贴默认靠右键菜单,选中文本还要先经过一个"标记"动作,多标签更是想都别想。这个界面从Windows NT时代一直继承到现在,它就是Windows 3.1时代的"控制台宿主程序"概念,期间虽然打过补丁,但底层架构决定了它的上限。PowerShell的情况稍微好一点,命令本身比cmd强了不止一个量级,但它的宿主窗口仍然是同一个老控制台。这就像你给一台老爷车换了台新发动机,结果变速箱还是老的——发动机有力气也发挥不出来。更难受的是,当你同时开着PowerShell、cmd、还有WSL窗口的时候,屏幕上的窗口堆成一排,来回切换全靠鼠标点,画面极度割裂。这些本质上是历史包袱:老控制台宿主必须向后兼容几十年前的程序输出方式,比如ANSI转义序列的支持残缺、光标渲染逻辑陈旧、窗口管理能力薄弱。Windows 10的"Windows ConHost"已经把能补的补得差不多了,但架构层的东西不是你打几个补丁能解决的。所以必须有一个新宿主,把渲染、输入、配置这些事彻底重做一遍。1.2 Windows Terminal解决了哪些具体痛点Windows Terminal不是为了取代某种shell,它是给cmd、PowerShell、WSL这些不同shell提供的"新房子"。普通终端只是让你敲命令,Windows Terminal把"敲命令"这个场景里所有的体验问题都拿了出来:第一,GPU文字渲染。老控制台用的是CPU绘制,窗口缩放、快速滚动时卡顿明显,尤其在你用--progress看日志、用git diff看大段输出的时候。Windows Terminal基于GPU加速渲染,滚动流畅度提升非常明显,字体用了现代字体引擎,高DPI下不再发虚。第二,真正的多标签和分屏。以前想同时开一个编译日志窗口和一个命令窗口,你得铺两个窗口再手动对齐;现在一个窗口内开标签页,还能左右上下分屏,画风终于跟现代编辑器对齐了。第三,可配置文件。老控制台的设置对话框几十年没变过,改个颜色都要一个个点;Windows Terminal用JSON文件保存所有配置,你改完保存立刻生效,还能把自己的配置放到同步盘里,换电脑直接恢复。第四,统一的快捷键。Ctrl+C和Ctrl+V终于可以用在终端里了,这是多少年Windows用户做梦都想要的事。还有Ctrl+Shift+T新建标签、Ctrl+Shift+F查找、F11全屏,这些快捷键熟悉之后根本回不去。第五,对WSL的支持。如果你装过WSL发行版,Windows Terminal会直接把它列进下拉菜单,切Linux环境不用再开一个绿窗口,主题、字体、快捷键全部统一。2. Windows Terminal安装与上手2.1 三种安装途径,选哪个Windows Terminal的安装方式主要有三种,我挨个试过,说一说区别。第一种是Microsoft Store搜索安装。这是最推荐的路径。好处是安装之后自动更新,跟着官方版本走,不用手动关注发布通知。坏处是如果你的Win10版本太老,商店会直接提示无法安装或下载不了,这个后面单独说。第二种是用winget命令安装。在商店安装好"应用安装程序"之后,打开命令行输入:winget install --id Microsoft.WindowsTerminal安装过程静默且快,适合我这种不想打开商店界面的人。如果你在Win10上执行winget提示找不到命令,多半是应用安装程序版本太旧,去商店更新一下再试。第三种是去GitHub的releases页面下载安装包自己装。这种方式适合Windows LTSC这类没有商店的环境,还有想固定某个版本跑生产环境的情况。但你要自己跟踪更新,我一般不推荐日常使用。无论哪种方式,装完以后按Win键输入terminal就能搜到。要注意的是,Windows Terminal本身要求系统在Windows 10 1903(Build 18362)以上,但实话说,老版本系统装上了有些新特性也会缺失。我个人的建议:既然都花时间折腾终端了,先把系统补丁打到位,至少19041以上,后面配置起来少一堆奇怪的兼容性问题。2.2 首次启动,先认识一下界面安装完成第一次打开,默认会进入PowerShell。这一个窗口里有几个关键区域要弄清楚:顶部是标签栏。右下角没有传统的状态栏,所有的入口都在标签栏右侧的向下箭头里:新建标签页、打开设置、检查更新。往下看,窗口最底部会显示当前后台运行的shell类型,比如PowerShell 7或者某个发行版的WSL。新建标签页的快捷键是Ctrl+Shift+T,按下去之后默认还是在PowerShell,但如果你点击标签栏右侧的下拉箭头,就能看到系统里所有已安装的shell:cmd、PowerShell、Windows PowerShell、还有装过的WSL发行版。这就是它统一多端的核心逻辑——所有shell都挂在一个宿主下,切换成本几乎为零。设置界面按Ctrl+,就能打开。第一次打开你可能有点懵,因为它是把JSON配置文件渲染成了一套可视化设置面板。面板里能改的东西很多,但真正的精细定制还是得直接改JSON。别怕,第三部分我会带着你拆。3. 配置文件拆解:从入门到改出一个顺手的终端3.1 配置文件到底藏在哪里很多人改配置的第一步就卡住了:找不到settings.json。其实不用记完整路径,最简单的方式就是打开Windows Terminal,按Ctrl+,,然后在可视化设置的左下角有个"打开JSON文件"按钮,它会用记事本打开真正的配置文件。文件的实际位置在你当前用户目录下的AppData\Local\Packages里面,Windows Terminal的包名文件夹下的LocalState目录中。手动翻路径很痛苦,所以我建议永远从设置界面进去。另外多提一句,这个文件是可以整个复制到另一台电脑的,我自己的配置文件就在同步盘里,重装系统后几分钟就能恢复全部终端习惯。settings.json的核心结构分三大块:profiles:定义所有可用的shell配置,包括默认shell、字体、透明度、启动目录等;schemes:定义配色方案列表,你想用新配色就往这里塞;actions:定义快捷键,把某个快捷键绑定到某个动作上。初次打开文件时,你会发现里面内容很长,其实大部分是默认配置的显式写法。真正要动的地方并不算多。3.2 核心配置项逐项说明先从最重要的profiles.defaults这块说起。它是"所有shell共用的默认配置",你可以把通用的设置都放这里,不用每个profile单独写一遍。最关键的有几个:fontFace:字体。这个对体验影响极大。系统默认的Consolas算及格,但如果你装了Nerd Font系列的等宽字体,终端的图标、特殊字符、分隔线都会变得非常规整。我默认用CaskaydiaCove Nerd Font,它兼顾等宽和可读性。没有装Nerd Font的话,中文字体建议自己指定一下,不指定某些环境下中文会变成方块,这个坑后面细说。fontSize:字号,我习惯11或者12,太小了长时间盯屏容易疲劳。注意缩放快捷键Ctrl+加减号只会临时改变显示大小,不会写进配置。useAcrylic和opacity:这两项控制毛玻璃透明效果。使用Acrylic材质时背景会带半透明模糊效果,opacity控制透明度,90%左右既能隐约看到后面的窗格又不影响阅读。如果开着远程桌面远程操作,某些显卡驱动下透明效果会失效,表现是窗口变全不透明,这时候把useAcrylic改成false用纯色背景更稳。startingDirectory:启动目录。我习惯设置为自己的工作目录,比如D:/work,这样每次开终端不用cd。注意这里用的是反斜杠路径,在JSON里要写成D:\\work。colorScheme:引用schemes里定义的配色名。后面第四部分专门讲怎么搞一套属于自己的配色。单个profile的配置也有意义。比如你装了两个Linux发行版,想让其中一个默认启动时自动连接某个固定目录,就在对应profile里写startingDirectory。它不会覆盖defaults,而是基于defaults叠加修改。3.3 我的推荐配置片段下面这份是我现在Win10主力机器上正在用的配置片段,你可以直接复制进自己的settings.json再按需改:{ "profiles": { "defaults": { "fontFace": "CaskaydiaCove Nerd Font", "fontSize": 11, "useAcrylic": true, "opacity": 92, "colorScheme": "One Half Dark", "startingDirectory": "D:\\work", "cursorShape": "bar", "cursorColor": "#c6a0f6" }, "list": [ { "name": "PowerShell", "commandline": "pwsh.exe -NoLogo", "guid": "{574e775e-4f2c-5e96-9374-4b3aca2c3e1a}" }, { "name": "Command Prompt", "commandline": "cmd.exe", "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}" } ] } }这里几个细节我解释一下:commandline里的pwsh.exe -NoLogo意思是打开PowerShell 7时直接跳过启动logo,屏幕干净,启动速度体感上也更快。如果你的机器只有Windows PowerShell 5.1,把这一行改成powershell.exe -NoLogo也一样有效。cursorShape和cursorColor可以改成自己习惯的光标样式,我偏爱竖线光标,因为在终端里跟文本混在一起时比方块光标干扰小。guid是每个profile的唯一标识,如果你新增一个profile不知道guid怎么写,系统会自动分配一个,你也可以用任意格式合法的GUID字符串,然后运行一次终端重新加载配置,它就会出现在标签里。4. 配色方案与个性化定制经验4.1 先选一套顺眼的预制配色配置里默认的配色方案叫Campbell,就是那个蓝底白字的经典款,一眼看过去还是老味道,做终端背景太刺眼。上一步我的配置里引用了One Half Dark,它是一种深灰底、柔和前景色的暗色方案,长时间看代码比纯黑底舒服很多,因为对比度不是拉满的,眼睛不容易累。除了One Half Dark,我推荐你直接在schemes里尝试下面几个预制款:Solarized Dark:老牌护眼色,饱和度低,青色和蓝色区分度高。Dracula:紫灰底方案,很多编辑器和终端都支持,界面统一后切换工具时视觉不跳。Tango Dark:接近Linux桌面的默认终端色,兼容性稳。在可视化设置界面的"配色方案"下拉框里可以直接切换预览,选好对应的名字,它会把名字写进配置里的colorScheme字段,不用手动改JSON。4.2 自己动手定义一套配色预制配色总有细节不满意的地方,Windows Terminal允许你在schemes数组里塞自定义方案。一个完整的配色方案是16个颜色值的组合:黑色、红色、绿色、黄色、蓝色、紫色、青色、白色各一个基础值,再加对应的8个亮色值,最后配背景色、前景色和光标色。我建议新手从现有的暗色方案改起来,不要凭空设计。下面是我自定义的一套"深空灰"方案,背景不是纯黑,是带一点冷色调的深灰,前景色用了柔和的白,亮红色和亮青色特意提高了辨识度,用来突出警告和链接:"schemes": [ { "name": "Deep Space Gray", "background": "#1e1e1e", "foreground": "#d4d4d4", "cursorColor": "#aeafad", "black": "#000000", "red": "#cd3131", "green": "#0dbc79", "yellow": "#e5e510", "blue": "#2472c8", "purple": "#bc3fbc", "cyan": "#11a8cd", "white": "#e5e5e5", "brightBlack": "#666666", "brightRed": "#f14c4c", "brightGreen": "#23d18b", "brightYellow": "#f5f543", "brightBlue": "#3b8eea", "brightPurple": "#d670d6", "brightCyan": "#29b8db", "brightWhite": "#e5e5e5" } ]改完保存后,把profiles.defaults里的colorScheme改成"Deep Space Gray",立刻生效。这里踩过的坑提醒一下:JSON里写颜色值最保险的格式是#rrggbb,不要图省事写三个字符的短颜色值,某些情况下不会解析成你想要的颜色。还有,cursorColor不是所有终端实例都生效,如果你发现光标颜色没变,先确认自己当前的光标形状是不是方块的,方块光标在一些版本里会忽略这个字段。4.3 背景图与沉浸感设置除了纯色,Windows Terminal还支持给窗口设置背景图。在profiles.defaults里加:"backgroundImage": "D:/Pictures/terminal-bg.png", "backgroundImageOpacity": 0.2, "backgroundImageStretchMode": "uniformToFill"背景图这个功能要克制。我自己试过用非常亮的高清壁纸当背景,结果字符全糊成一片,根本没法用。建议选暗色、低对比度的图片,然后把背景透明度调到0.15到0.25之间。图片只是让终端看起来有一点"呼吸感",主角永远是前景的文字。还有一个小技巧:如果你更喜欢纯色但想要一点透明效果,可以把useAcrylic打开,opacity调到95,不要开背景图。这样窗口后面隐约能看到其他窗口的轮廓,既保留了毛玻璃质感,又不分散注意力。5. 快捷键与多标签效率技巧5.1 高频快捷键速查表Windows Terminal最值回票价的特性之一就是快捷键体系。我把常用的整理成一张表,你照着用一周,基本就能形成肌肉记忆:快捷键作用Ctrl+Shift+T新建标签页Ctrl+Shift+W关闭当前标签页Ctrl+Tab切换到下一个标签页Ctrl+Shift+Tab切换到上一个标签页Ctrl+Shift+C / Ctrl+Shift+V复制 / 粘贴Ctrl+Shift+F在当前终端内容中查找Ctrl+Shift+D创建垂直分屏窗格Alt+Shift+D创建水平分屏窗格(部分版本)Alt + 方向键在窗格之间切换焦点Ctrl+,打开设置F11全屏 / 退出全屏Ctrl+Shift+Space打开默认shell的下拉菜单我个人的习惯是把复制粘贴绑定到Ctrl+C和Ctrl+V上,虽然默认是Ctrl+Shift+C/V,但Ctrl+C在已经选中文本时会复制,没有选中时会发中断信号,这个逻辑非常贴心。不过很多人嫌两个键一起按别扭,那就老老实实用Ctrl+Shift+C/V,也不差这一点。查找功能大概是很多人忽略的。终端输出一大篇日志的时候,以前只能用鼠标滚轮手动翻找关键词。现在Ctrl+Shift+F唤出查找框,支持高亮所有匹配项,上下跳转,查日志效率翻了好几倍。5.2 多标签页与窗格操作的实际场景多标签页解决的是"窗口太多"的问题。举个例子,我本地起服务的时候通常要开四个窗口:一个跑编译,一个跑测试命令,一个连服务器看错误日志,还有一个临时敲git命令。如果这四个窗口单独铺在任务栏,切换时鼠标要精确点对位置,眼睛来回扫描很浪费时间。统一放进Windows Terminal的一个窗口之后,Ctrl+Tab就能按顺序切换,每个标签还有独立的标题,标题栏会自动显示正在执行的进程名。分屏窗格用得好的话,效率提升比标签页还猛。Ctrl+Shift+D会垂直切开当前窗格,两个区域并排显示。这个场景最经典的是:左边窗格用tail -f实时看应用日志,右边窗格敲命令处理问题,两者同屏可见,不用来回切标签。分屏之后,窗格大小可以拖拽调整,Alt+方向键在窗格间跳转,Ctrl+Shift+W会关掉当前焦点所在的窗格而不是整个标签页。需要注意一点:分屏之后,很多快捷键作用在"当前焦点窗格",而不是"整个标签页"。如果你发现按了某个快捷键没反应,先检查焦点是不是在正确的窗格里。Alt+方向键对快速跳窗格非常重要,一定要练熟。5.3 自定义快捷键与命令行参数快捷键不只能使用默认功能,还能把你自己的命令绑上去。比如我想一键在终端里打开桌面文件夹:"actions": [ { "command": { "action": "newTab", "commandline": "cd ~/Desktop && ls", "startingDirectory": "~/Desktop" }, "keys": "ctrl+alt+d" } ]保存后再按Ctrl+Alt+D,就会新建一个标签页直接进入桌面目录并列出文件。这种绑定最常见的用途是把常用工具的启动命令变成快捷键,比如打开压测工具、打开数据库客户端之类。注意绑定命令的本质是执行一条commandline,不需要额外封装脚本,直接在JSON里写就行。命令行参数也值得一提。Windows Terminal的启动程序wt.exe支持直接传参,比如:wt -d D:/work是以指定目录启动默认shell,wt -p "Command Prompt"是打开指定的profile。如果你想在快捷方式里做文章,比如桌面放一个"工作终端"快捷方式,目标设为wt.exe -d D:/work,点开就是工作目录,很实用。6. 常见问题与避坑实录6.1 字体相关:字符变成方块、图标不显示这个问题我在用Nerd Font之前遇到得很频繁。Windows Terminal的字体渲染跟老控制台不一样,如果你选的字体不支持某些字符,终端会显示成空方块。症状通常是:git状态符号、标签页关闭按钮旁边的图标、特殊分隔线显示成方块,但英文和数字正常。解决办法分两步。第一步,装一个Nerd Font字体,网上一搜一大把,下载后右键安装,然后把fontFace改成对应字体名。第二步,如果某些已经装了Nerd Font的字符仍显示方块,检查一下字体名是否写错——JSON里的fontFace要求填字体的显示名称,不是文件名。比如文件名是CaskaydiaCove NF Regular,里面显示名可能不带Regular后缀,写错一个字母就完全加载不到。中文字体也需要单独处理。很多时候你设置西文字体为某个Nerd Font,但中文根本没指定,系统会随手拿一个字体来渲染,结果中英文混排时高度、粗细都不协调。我的做法是defaults里加一项"fontFace": "CaskaydiaCove Nerd Font, Microsoft YaHei UI",用逗号隔开指定中文回退字体。这样英文走Nerd Font,中文走微软雅黑UI,整体视觉统一很多。6.2 中文乱码和编码问题终端里输出中文乱码,先分清是"输入乱码"还是"输出乱码"。输入中文变成乱码,多半是shell环境的代码页不对。cmd默认的代码页可能是936(GBK),而Windows Terminal默认会尝试UTF-8。你可以先在shell里执行chcp 65001切成UTF-8,再试一下中文输入。如果每次都要手动切,那就把命令写进shell的启动配置里,cmd用autorun注册表,PowerShell用$PROFILE。输出乱码的情况更复杂一点。比如在PowerShell里运行一个Python脚本,脚本打印中文字符,终端显示乱码,这通常是Python输出编码和终端不匹配。Windows Terminal没有单独的"编码开关",你要从源头解决:Python脚本里显式做sys.stdout.reconfigure(encoding='utf-8'),或者在启动PowerShell时设置$env:PYTHONIOENCODING="utf-8"。这个坑排查起来容易绕远,我建议先做一个快速判断:在终端里输入echo 中文,如果能正常回显,说明终端和后端shell的编码配合没问题;如果还是乱码,问题就在shell一层,别在终端设置里来回翻。6.3 配置改了不生效,保存后没有反应可能原因有三类优先级从高到低。第一,JSON语法错误。多一个逗号、少一个引号,整个配置都加载不了。这种时候终端不会回退到默认配置,但界面上的可视化设置会打开失败,还会弹一个错误提示。去文件里逐行检查,尤其是最后一项后面不能有逗号。第二,配置文件名或路径错误。如果你把settings.json复制到别的机器,文件编码必须是UTF-8,另存为ANSI会导致解析出乱码进而加载失败。第三,改了defaults下面的配置但对应profile里也单独写了同名属性,profile里的优先级更高,把defaults里的覆盖了。所以排查时先看是不是有"局部配置覆盖全局配置"的情况,比如你要改全局透明度,却在某个profile里单独写了useAcrylic=false,那全局配置自然不生效。还有一个很容易忽略的点:Windows Terminal支持配置热加载,保存文件后几毫秒内就生效。但如果界面没有任何变化,按Ctrl+Shift+F5刷新一下当前标签页,有时候是渲染层缓存问题,不是配置问题。6.4 安装了WSL却在下拉菜单里找不到装了某个Linux发行版后,Windows Terminal的下拉菜单应该自动出现对应profile,但偶尔没出现。这种情况往往是Windows Terminal检测配置文件时没有找到对应的wsl.exe启动器,或者发行版安装后没有正确注册。解决方案是手动添加profile。在profiles.list里新增一项,name写发行版名字,commandline写wsl.exe -d <发行版名>,比如wsl.exe -d debian。guid随便填一个合法GUID,保存后就能在下拉菜单看到。还有一种情况是WSL本身没更新到支持Windows Terminal的版本,去设置里把WSL内核更新一下。如果你同时装了多个发行版,我建议每个发行版单独建一个profile,而不是统一用wsl.exe默认打开第一个。这样标签页标题、图标、启动目录都可以分开发配,日常切换少很多歧义。6.5 远程桌面环境下透明效果失效这不是你配置错了,而是远程桌面协议对GPU合成和Acrylic材质的支持有限。在远程桌面会话里,终端窗口的透明效果会退化成不透明,甚至某些显卡驱动下还会出现画面闪烁。我实测下来,这不是Windows Terminal本身的bug,跟你本地配置没关系。解决办法很直接:远程连入时临时把useAcrylic关掉,改成纯色背景。不要等到卡到不行才想起来,我建议在远程桌面连接后开机脚本里放一个切换配置的小动作,或者干脆给远程环境单独准备一套settings.json。工作恢复正常后,再切回本地配置文件。设置文件支持共享,这个切换成本并不高。写在最后的一点使用体会我自己折腾Windows Terminal过程中最大的体会是:不要一开始就追求全网花花绿绿的配置截图,先把字体、透明度、快捷键这三样搞定,就已经甩开默认体验一大截了。那些看着酷炫的彩虹终端、花哨提示符,很多都是拿特定主题加代码高亮堆出来的,真正影响每天打字效率的,是窗口启动速度、字符清晰度、切换流畅度这些基础体验。另外一个小技巧送给你:把settings.json放进同步盘,然后给配置文件夹里的settings.json建一个软链接。这样无论在哪台机器更新了配置,都会自动同步到所有环境。我第一次重装系统只花了几下复制粘贴就恢复了全部终端习惯,那种感觉确实很爽。终端是很私人的工具,没有绝对正确的配置,只有最适合你工作流的配置,一边用一边调,慢慢就会变成你最顺手的形态。
如果你还在用Win10自带的cmd窗口写命令,我强烈建议你腾一下午时间,把Windows Terminal折腾明白。真不是小题大做——我第一次把工作环境从原生的PowerShell窗口切过来之后,最大的感受是:为什么没有早几年用上它。命令行这种每天要碰几十次的东西,窗口能不能透明、复制粘贴顺不顺手、字体渲染清不清晰,看起来都是小事,日积月累那就是巨大的时间损耗。这篇文章就是围绕Win10下的Windows Terminal展开的。我会从为什么要换、怎么安装、配置文件怎么改、配色怎么调、快捷键怎么用,再到我踩过的坑,全部过一遍。适合所有想在Windows 10上把终端用顺手的人,不管是刚接触命令行的新手,还是准备深度定制的老手,都能找到可以直接抄作业的部分。1. 为什么Win10用户需要一个像样的终端1.1 系统自带终端的历史包袱很多人觉得终端能用就行,但"能用"和"好用"之间的差距,在Windows上格外大。你打开cmd,看到的是一个固定尺寸的老式窗口:字体低DPI下模糊、高DPI下发虚,不能改透明度,复制粘贴默认靠右键菜单,选中文本还要先经过一个"标记"动作,多标签更是想都别想。这个界面从Windows NT时代一直继承到现在,它就是Windows 3.1时代的"控制台宿主程序"概念,期间虽然打过补丁,但底层架构决定了它的上限。PowerShell的情况稍微好一点,命令本身比cmd强了不止一个量级,但它的宿主窗口仍然是同一个老控制台。这就像你给一台老爷车换了台新发动机,结果变速箱还是老的——发动机有力气也发挥不出来。更难受的是,当你同时开着PowerShell、cmd、还有WSL窗口的时候,屏幕上的窗口堆成一排,来回切换全靠鼠标点,画面极度割裂。这些本质上是历史包袱:老控制台宿主必须向后兼容几十年前的程序输出方式,比如ANSI转义序列的支持残缺、光标渲染逻辑陈旧、窗口管理能力薄弱。Windows 10的"Windows ConHost"已经把能补的补得差不多了,但架构层的东西不是你打几个补丁能解决的。所以必须有一个新宿主,把渲染、输入、配置这些事彻底重做一遍。1.2 Windows Terminal解决了哪些具体痛点Windows Terminal不是为了取代某种shell,它是给cmd、PowerShell、WSL这些不同shell提供的"新房子"。普通终端只是让你敲命令,Windows Terminal把"敲命令"这个场景里所有的体验问题都拿了出来:第一,GPU文字渲染。老控制台用的是CPU绘制,窗口缩放、快速滚动时卡顿明显,尤其在你用--progress看日志、用git diff看大段输出的时候。Windows Terminal基于GPU加速渲染,滚动流畅度提升非常明显,字体用了现代字体引擎,高DPI下不再发虚。第二,真正的多标签和分屏。以前想同时开一个编译日志窗口和一个命令窗口,你得铺两个窗口再手动对齐;现在一个窗口内开标签页,还能左右上下分屏,画风终于跟现代编辑器对齐了。第三,可配置文件。老控制台的设置对话框几十年没变过,改个颜色都要一个个点;Windows Terminal用JSON文件保存所有配置,你改完保存立刻生效,还能把自己的配置放到同步盘里,换电脑直接恢复。第四,统一的快捷键。Ctrl+C和Ctrl+V终于可以用在终端里了,这是多少年Windows用户做梦都想要的事。还有Ctrl+Shift+T新建标签、Ctrl+Shift+F查找、F11全屏,这些快捷键熟悉之后根本回不去。第五,对WSL的支持。如果你装过WSL发行版,Windows Terminal会直接把它列进下拉菜单,切Linux环境不用再开一个绿窗口,主题、字体、快捷键全部统一。2. Windows Terminal安装与上手2.1 三种安装途径,选哪个Windows Terminal的安装方式主要有三种,我挨个试过,说一说区别。第一种是Microsoft Store搜索安装。这是最推荐的路径。好处是安装之后自动更新,跟着官方版本走,不用手动关注发布通知。坏处是如果你的Win10版本太老,商店会直接提示无法安装或下载不了,这个后面单独说。第二种是用winget命令安装。在商店安装好"应用安装程序"之后,打开命令行输入:winget install --id Microsoft.WindowsTerminal安装过程静默且快,适合我这种不想打开商店界面的人。如果你在Win10上执行winget提示找不到命令,多半是应用安装程序版本太旧,去商店更新一下再试。第三种是去GitHub的releases页面下载安装包自己装。这种方式适合Windows LTSC这类没有商店的环境,还有想固定某个版本跑生产环境的情况。但你要自己跟踪更新,我一般不推荐日常使用。无论哪种方式,装完以后按Win键输入terminal就能搜到。要注意的是,Windows Terminal本身要求系统在Windows 10 1903(Build 18362)以上,但实话说,老版本系统装上了有些新特性也会缺失。我个人的建议:既然都花时间折腾终端了,先把系统补丁打到位,至少19041以上,后面配置起来少一堆奇怪的兼容性问题。2.2 首次启动,先认识一下界面安装完成第一次打开,默认会进入PowerShell。这一个窗口里有几个关键区域要弄清楚:顶部是标签栏。右下角没有传统的状态栏,所有的入口都在标签栏右侧的向下箭头里:新建标签页、打开设置、检查更新。往下看,窗口最底部会显示当前后台运行的shell类型,比如PowerShell 7或者某个发行版的WSL。新建标签页的快捷键是Ctrl+Shift+T,按下去之后默认还是在PowerShell,但如果你点击标签栏右侧的下拉箭头,就能看到系统里所有已安装的shell:cmd、PowerShell、Windows PowerShell、还有装过的WSL发行版。这就是它统一多端的核心逻辑——所有shell都挂在一个宿主下,切换成本几乎为零。设置界面按Ctrl+,就能打开。第一次打开你可能有点懵,因为它是把JSON配置文件渲染成了一套可视化设置面板。面板里能改的东西很多,但真正的精细定制还是得直接改JSON。别怕,第三部分我会带着你拆。3. 配置文件拆解:从入门到改出一个顺手的终端3.1 配置文件到底藏在哪里很多人改配置的第一步就卡住了:找不到settings.json。其实不用记完整路径,最简单的方式就是打开Windows Terminal,按Ctrl+,,然后在可视化设置的左下角有个"打开JSON文件"按钮,它会用记事本打开真正的配置文件。文件的实际位置在你当前用户目录下的AppData\Local\Packages里面,Windows Terminal的包名文件夹下的LocalState目录中。手动翻路径很痛苦,所以我建议永远从设置界面进去。另外多提一句,这个文件是可以整个复制到另一台电脑的,我自己的配置文件就在同步盘里,重装系统后几分钟就能恢复全部终端习惯。settings.json的核心结构分三大块:profiles:定义所有可用的shell配置,包括默认shell、字体、透明度、启动目录等;schemes:定义配色方案列表,你想用新配色就往这里塞;actions:定义快捷键,把某个快捷键绑定到某个动作上。初次打开文件时,你会发现里面内容很长,其实大部分是默认配置的显式写法。真正要动的地方并不算多。3.2 核心配置项逐项说明先从最重要的profiles.defaults这块说起。它是"所有shell共用的默认配置",你可以把通用的设置都放这里,不用每个profile单独写一遍。最关键的有几个:fontFace:字体。这个对体验影响极大。系统默认的Consolas算及格,但如果你装了Nerd Font系列的等宽字体,终端的图标、特殊字符、分隔线都会变得非常规整。我默认用CaskaydiaCove Nerd Font,它兼顾等宽和可读性。没有装Nerd Font的话,中文字体建议自己指定一下,不指定某些环境下中文会变成方块,这个坑后面细说。fontSize:字号,我习惯11或者12,太小了长时间盯屏容易疲劳。注意缩放快捷键Ctrl+加减号只会临时改变显示大小,不会写进配置。useAcrylic和opacity:这两项控制毛玻璃透明效果。使用Acrylic材质时背景会带半透明模糊效果,opacity控制透明度,90%左右既能隐约看到后面的窗格又不影响阅读。如果开着远程桌面远程操作,某些显卡驱动下透明效果会失效,表现是窗口变全不透明,这时候把useAcrylic改成false用纯色背景更稳。startingDirectory:启动目录。我习惯设置为自己的工作目录,比如D:/work,这样每次开终端不用cd。注意这里用的是反斜杠路径,在JSON里要写成D:\\work。colorScheme:引用schemes里定义的配色名。后面第四部分专门讲怎么搞一套属于自己的配色。单个profile的配置也有意义。比如你装了两个Linux发行版,想让其中一个默认启动时自动连接某个固定目录,就在对应profile里写startingDirectory。它不会覆盖defaults,而是基于defaults叠加修改。3.3 我的推荐配置片段下面这份是我现在Win10主力机器上正在用的配置片段,你可以直接复制进自己的settings.json再按需改:{ "profiles": { "defaults": { "fontFace": "CaskaydiaCove Nerd Font", "fontSize": 11, "useAcrylic": true, "opacity": 92, "colorScheme": "One Half Dark", "startingDirectory": "D:\\work", "cursorShape": "bar", "cursorColor": "#c6a0f6" }, "list": [ { "name": "PowerShell", "commandline": "pwsh.exe -NoLogo", "guid": "{574e775e-4f2c-5e96-9374-4b3aca2c3e1a}" }, { "name": "Command Prompt", "commandline": "cmd.exe", "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}" } ] } }这里几个细节我解释一下:commandline里的pwsh.exe -NoLogo意思是打开PowerShell 7时直接跳过启动logo,屏幕干净,启动速度体感上也更快。如果你的机器只有Windows PowerShell 5.1,把这一行改成powershell.exe -NoLogo也一样有效。cursorShape和cursorColor可以改成自己习惯的光标样式,我偏爱竖线光标,因为在终端里跟文本混在一起时比方块光标干扰小。guid是每个profile的唯一标识,如果你新增一个profile不知道guid怎么写,系统会自动分配一个,你也可以用任意格式合法的GUID字符串,然后运行一次终端重新加载配置,它就会出现在标签里。4. 配色方案与个性化定制经验4.1 先选一套顺眼的预制配色配置里默认的配色方案叫Campbell,就是那个蓝底白字的经典款,一眼看过去还是老味道,做终端背景太刺眼。上一步我的配置里引用了One Half Dark,它是一种深灰底、柔和前景色的暗色方案,长时间看代码比纯黑底舒服很多,因为对比度不是拉满的,眼睛不容易累。除了One Half Dark,我推荐你直接在schemes里尝试下面几个预制款:Solarized Dark:老牌护眼色,饱和度低,青色和蓝色区分度高。Dracula:紫灰底方案,很多编辑器和终端都支持,界面统一后切换工具时视觉不跳。Tango Dark:接近Linux桌面的默认终端色,兼容性稳。在可视化设置界面的"配色方案"下拉框里可以直接切换预览,选好对应的名字,它会把名字写进配置里的colorScheme字段,不用手动改JSON。4.2 自己动手定义一套配色预制配色总有细节不满意的地方,Windows Terminal允许你在schemes数组里塞自定义方案。一个完整的配色方案是16个颜色值的组合:黑色、红色、绿色、黄色、蓝色、紫色、青色、白色各一个基础值,再加对应的8个亮色值,最后配背景色、前景色和光标色。我建议新手从现有的暗色方案改起来,不要凭空设计。下面是我自定义的一套"深空灰"方案,背景不是纯黑,是带一点冷色调的深灰,前景色用了柔和的白,亮红色和亮青色特意提高了辨识度,用来突出警告和链接:"schemes": [ { "name": "Deep Space Gray", "background": "#1e1e1e", "foreground": "#d4d4d4", "cursorColor": "#aeafad", "black": "#000000", "red": "#cd3131", "green": "#0dbc79", "yellow": "#e5e510", "blue": "#2472c8", "purple": "#bc3fbc", "cyan": "#11a8cd", "white": "#e5e5e5", "brightBlack": "#666666", "brightRed": "#f14c4c", "brightGreen": "#23d18b", "brightYellow": "#f5f543", "brightBlue": "#3b8eea", "brightPurple": "#d670d6", "brightCyan": "#29b8db", "brightWhite": "#e5e5e5" } ]改完保存后,把profiles.defaults里的colorScheme改成"Deep Space Gray",立刻生效。这里踩过的坑提醒一下:JSON里写颜色值最保险的格式是#rrggbb,不要图省事写三个字符的短颜色值,某些情况下不会解析成你想要的颜色。还有,cursorColor不是所有终端实例都生效,如果你发现光标颜色没变,先确认自己当前的光标形状是不是方块的,方块光标在一些版本里会忽略这个字段。4.3 背景图与沉浸感设置除了纯色,Windows Terminal还支持给窗口设置背景图。在profiles.defaults里加:"backgroundImage": "D:/Pictures/terminal-bg.png", "backgroundImageOpacity": 0.2, "backgroundImageStretchMode": "uniformToFill"背景图这个功能要克制。我自己试过用非常亮的高清壁纸当背景,结果字符全糊成一片,根本没法用。建议选暗色、低对比度的图片,然后把背景透明度调到0.15到0.25之间。图片只是让终端看起来有一点"呼吸感",主角永远是前景的文字。还有一个小技巧:如果你更喜欢纯色但想要一点透明效果,可以把useAcrylic打开,opacity调到95,不要开背景图。这样窗口后面隐约能看到其他窗口的轮廓,既保留了毛玻璃质感,又不分散注意力。5. 快捷键与多标签效率技巧5.1 高频快捷键速查表Windows Terminal最值回票价的特性之一就是快捷键体系。我把常用的整理成一张表,你照着用一周,基本就能形成肌肉记忆:快捷键作用Ctrl+Shift+T新建标签页Ctrl+Shift+W关闭当前标签页Ctrl+Tab切换到下一个标签页Ctrl+Shift+Tab切换到上一个标签页Ctrl+Shift+C / Ctrl+Shift+V复制 / 粘贴Ctrl+Shift+F在当前终端内容中查找Ctrl+Shift+D创建垂直分屏窗格Alt+Shift+D创建水平分屏窗格(部分版本)Alt + 方向键在窗格之间切换焦点Ctrl+,打开设置F11全屏 / 退出全屏Ctrl+Shift+Space打开默认shell的下拉菜单我个人的习惯是把复制粘贴绑定到Ctrl+C和Ctrl+V上,虽然默认是Ctrl+Shift+C/V,但Ctrl+C在已经选中文本时会复制,没有选中时会发中断信号,这个逻辑非常贴心。不过很多人嫌两个键一起按别扭,那就老老实实用Ctrl+Shift+C/V,也不差这一点。查找功能大概是很多人忽略的。终端输出一大篇日志的时候,以前只能用鼠标滚轮手动翻找关键词。现在Ctrl+Shift+F唤出查找框,支持高亮所有匹配项,上下跳转,查日志效率翻了好几倍。5.2 多标签页与窗格操作的实际场景多标签页解决的是"窗口太多"的问题。举个例子,我本地起服务的时候通常要开四个窗口:一个跑编译,一个跑测试命令,一个连服务器看错误日志,还有一个临时敲git命令。如果这四个窗口单独铺在任务栏,切换时鼠标要精确点对位置,眼睛来回扫描很浪费时间。统一放进Windows Terminal的一个窗口之后,Ctrl+Tab就能按顺序切换,每个标签还有独立的标题,标题栏会自动显示正在执行的进程名。分屏窗格用得好的话,效率提升比标签页还猛。Ctrl+Shift+D会垂直切开当前窗格,两个区域并排显示。这个场景最经典的是:左边窗格用tail -f实时看应用日志,右边窗格敲命令处理问题,两者同屏可见,不用来回切标签。分屏之后,窗格大小可以拖拽调整,Alt+方向键在窗格间跳转,Ctrl+Shift+W会关掉当前焦点所在的窗格而不是整个标签页。需要注意一点:分屏之后,很多快捷键作用在"当前焦点窗格",而不是"整个标签页"。如果你发现按了某个快捷键没反应,先检查焦点是不是在正确的窗格里。Alt+方向键对快速跳窗格非常重要,一定要练熟。5.3 自定义快捷键与命令行参数快捷键不只能使用默认功能,还能把你自己的命令绑上去。比如我想一键在终端里打开桌面文件夹:"actions": [ { "command": { "action": "newTab", "commandline": "cd ~/Desktop && ls", "startingDirectory": "~/Desktop" }, "keys": "ctrl+alt+d" } ]保存后再按Ctrl+Alt+D,就会新建一个标签页直接进入桌面目录并列出文件。这种绑定最常见的用途是把常用工具的启动命令变成快捷键,比如打开压测工具、打开数据库客户端之类。注意绑定命令的本质是执行一条commandline,不需要额外封装脚本,直接在JSON里写就行。命令行参数也值得一提。Windows Terminal的启动程序wt.exe支持直接传参,比如:wt -d D:/work是以指定目录启动默认shell,wt -p "Command Prompt"是打开指定的profile。如果你想在快捷方式里做文章,比如桌面放一个"工作终端"快捷方式,目标设为wt.exe -d D:/work,点开就是工作目录,很实用。6. 常见问题与避坑实录6.1 字体相关:字符变成方块、图标不显示这个问题我在用Nerd Font之前遇到得很频繁。Windows Terminal的字体渲染跟老控制台不一样,如果你选的字体不支持某些字符,终端会显示成空方块。症状通常是:git状态符号、标签页关闭按钮旁边的图标、特殊分隔线显示成方块,但英文和数字正常。解决办法分两步。第一步,装一个Nerd Font字体,网上一搜一大把,下载后右键安装,然后把fontFace改成对应字体名。第二步,如果某些已经装了Nerd Font的字符仍显示方块,检查一下字体名是否写错——JSON里的fontFace要求填字体的显示名称,不是文件名。比如文件名是CaskaydiaCove NF Regular,里面显示名可能不带Regular后缀,写错一个字母就完全加载不到。中文字体也需要单独处理。很多时候你设置西文字体为某个Nerd Font,但中文根本没指定,系统会随手拿一个字体来渲染,结果中英文混排时高度、粗细都不协调。我的做法是defaults里加一项"fontFace": "CaskaydiaCove Nerd Font, Microsoft YaHei UI",用逗号隔开指定中文回退字体。这样英文走Nerd Font,中文走微软雅黑UI,整体视觉统一很多。6.2 中文乱码和编码问题终端里输出中文乱码,先分清是"输入乱码"还是"输出乱码"。输入中文变成乱码,多半是shell环境的代码页不对。cmd默认的代码页可能是936(GBK),而Windows Terminal默认会尝试UTF-8。你可以先在shell里执行chcp 65001切成UTF-8,再试一下中文输入。如果每次都要手动切,那就把命令写进shell的启动配置里,cmd用autorun注册表,PowerShell用$PROFILE。输出乱码的情况更复杂一点。比如在PowerShell里运行一个Python脚本,脚本打印中文字符,终端显示乱码,这通常是Python输出编码和终端不匹配。Windows Terminal没有单独的"编码开关",你要从源头解决:Python脚本里显式做sys.stdout.reconfigure(encoding='utf-8'),或者在启动PowerShell时设置$env:PYTHONIOENCODING="utf-8"。这个坑排查起来容易绕远,我建议先做一个快速判断:在终端里输入echo 中文,如果能正常回显,说明终端和后端shell的编码配合没问题;如果还是乱码,问题就在shell一层,别在终端设置里来回翻。6.3 配置改了不生效,保存后没有反应可能原因有三类优先级从高到低。第一,JSON语法错误。多一个逗号、少一个引号,整个配置都加载不了。这种时候终端不会回退到默认配置,但界面上的可视化设置会打开失败,还会弹一个错误提示。去文件里逐行检查,尤其是最后一项后面不能有逗号。第二,配置文件名或路径错误。如果你把settings.json复制到别的机器,文件编码必须是UTF-8,另存为ANSI会导致解析出乱码进而加载失败。第三,改了defaults下面的配置但对应profile里也单独写了同名属性,profile里的优先级更高,把defaults里的覆盖了。所以排查时先看是不是有"局部配置覆盖全局配置"的情况,比如你要改全局透明度,却在某个profile里单独写了useAcrylic=false,那全局配置自然不生效。还有一个很容易忽略的点:Windows Terminal支持配置热加载,保存文件后几毫秒内就生效。但如果界面没有任何变化,按Ctrl+Shift+F5刷新一下当前标签页,有时候是渲染层缓存问题,不是配置问题。6.4 安装了WSL却在下拉菜单里找不到装了某个Linux发行版后,Windows Terminal的下拉菜单应该自动出现对应profile,但偶尔没出现。这种情况往往是Windows Terminal检测配置文件时没有找到对应的wsl.exe启动器,或者发行版安装后没有正确注册。解决方案是手动添加profile。在profiles.list里新增一项,name写发行版名字,commandline写wsl.exe -d <发行版名>,比如wsl.exe -d debian。guid随便填一个合法GUID,保存后就能在下拉菜单看到。还有一种情况是WSL本身没更新到支持Windows Terminal的版本,去设置里把WSL内核更新一下。如果你同时装了多个发行版,我建议每个发行版单独建一个profile,而不是统一用wsl.exe默认打开第一个。这样标签页标题、图标、启动目录都可以分开发配,日常切换少很多歧义。6.5 远程桌面环境下透明效果失效这不是你配置错了,而是远程桌面协议对GPU合成和Acrylic材质的支持有限。在远程桌面会话里,终端窗口的透明效果会退化成不透明,甚至某些显卡驱动下还会出现画面闪烁。我实测下来,这不是Windows Terminal本身的bug,跟你本地配置没关系。解决办法很直接:远程连入时临时把useAcrylic关掉,改成纯色背景。不要等到卡到不行才想起来,我建议在远程桌面连接后开机脚本里放一个切换配置的小动作,或者干脆给远程环境单独准备一套settings.json。工作恢复正常后,再切回本地配置文件。设置文件支持共享,这个切换成本并不高。写在最后的一点使用体会我自己折腾Windows Terminal过程中最大的体会是:不要一开始就追求全网花花绿绿的配置截图,先把字体、透明度、快捷键这三样搞定,就已经甩开默认体验一大截了。那些看着酷炫的彩虹终端、花哨提示符,很多都是拿特定主题加代码高亮堆出来的,真正影响每天打字效率的,是窗口启动速度、字符清晰度、切换流畅度这些基础体验。另外一个小技巧送给你:把settings.json放进同步盘,然后给配置文件夹里的settings.json建一个软链接。这样无论在哪台机器更新了配置,都会自动同步到所有环境。我第一次重装系统只花了几下复制粘贴就恢复了全部终端习惯,那种感觉确实很爽。终端是很私人的工具,没有绝对正确的配置,只有最适合你工作流的配置,一边用一边调,慢慢就会变成你最顺手的形态。