如果你还在用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文件保存所有配置你改完保存立刻生效还能把自己的配置放到同步盘里换电脑直接恢复。第四统一的快捷键。CtrlC和CtrlV终于可以用在终端里了这是多少年Windows用户做梦都想要的事。还有CtrlShiftT新建标签、CtrlShiftF查找、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 1903Build 18362以上但实话说老版本系统装上了有些新特性也会缺失。我个人的建议既然都花时间折腾终端了先把系统补丁打到位至少19041以上后面配置起来少一堆奇怪的兼容性问题。2.2 首次启动先认识一下界面安装完成第一次打开默认会进入PowerShell。这一个窗口里有几个关键区域要弄清楚顶部是标签栏。右下角没有传统的状态栏所有的入口都在标签栏右侧的向下箭头里新建标签页、打开设置、检查更新。往下看窗口最底部会显示当前后台运行的shell类型比如PowerShell 7或者某个发行版的WSL。新建标签页的快捷键是CtrlShiftT按下去之后默认还是在PowerShell但如果你点击标签栏右侧的下拉箭头就能看到系统里所有已安装的shellcmd、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最值回票价的特性之一就是快捷键体系。我把常用的整理成一张表你照着用一周基本就能形成肌肉记忆快捷键作用CtrlShiftT新建标签页CtrlShiftW关闭当前标签页CtrlTab切换到下一个标签页CtrlShiftTab切换到上一个标签页CtrlShiftC / CtrlShiftV复制 / 粘贴CtrlShiftF在当前终端内容中查找CtrlShiftD创建垂直分屏窗格AltShiftD创建水平分屏窗格部分版本Alt 方向键在窗格之间切换焦点Ctrl,打开设置F11全屏 / 退出全屏CtrlShiftSpace打开默认shell的下拉菜单我个人的习惯是把复制粘贴绑定到CtrlC和CtrlV上虽然默认是CtrlShiftC/V但CtrlC在已经选中文本时会复制没有选中时会发中断信号这个逻辑非常贴心。不过很多人嫌两个键一起按别扭那就老老实实用CtrlShiftC/V也不差这一点。查找功能大概是很多人忽略的。终端输出一大篇日志的时候以前只能用鼠标滚轮手动翻找关键词。现在CtrlShiftF唤出查找框支持高亮所有匹配项上下跳转查日志效率翻了好几倍。5.2 多标签页与窗格操作的实际场景多标签页解决的是窗口太多的问题。举个例子我本地起服务的时候通常要开四个窗口一个跑编译一个跑测试命令一个连服务器看错误日志还有一个临时敲git命令。如果这四个窗口单独铺在任务栏切换时鼠标要精确点对位置眼睛来回扫描很浪费时间。统一放进Windows Terminal的一个窗口之后CtrlTab就能按顺序切换每个标签还有独立的标题标题栏会自动显示正在执行的进程名。分屏窗格用得好的话效率提升比标签页还猛。CtrlShiftD会垂直切开当前窗格两个区域并排显示。这个场景最经典的是左边窗格用tail -f实时看应用日志右边窗格敲命令处理问题两者同屏可见不用来回切标签。分屏之后窗格大小可以拖拽调整Alt方向键在窗格间跳转CtrlShiftW会关掉当前焦点所在的窗格而不是整个标签页。需要注意一点分屏之后很多快捷键作用在当前焦点窗格而不是整个标签页。如果你发现按了某个快捷键没反应先检查焦点是不是在正确的窗格里。Alt方向键对快速跳窗格非常重要一定要练熟。5.3 自定义快捷键与命令行参数快捷键不只能使用默认功能还能把你自己的命令绑上去。比如我想一键在终端里打开桌面文件夹actions: [ { command: { action: newTab, commandline: cd ~/Desktop ls, startingDirectory: ~/Desktop }, keys: ctrlaltd } ]保存后再按CtrlAltD就会新建一个标签页直接进入桌面目录并列出文件。这种绑定最常见的用途是把常用工具的启动命令变成快捷键比如打开压测工具、打开数据库客户端之类。注意绑定命令的本质是执行一条commandline不需要额外封装脚本直接在JSON里写就行。命令行参数也值得一提。Windows Terminal的启动程序wt.exe支持直接传参比如wt -d D:/work是以指定目录启动默认shellwt -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默认的代码页可能是936GBK而Windows Terminal默认会尝试UTF-8。你可以先在shell里执行chcp 65001切成UTF-8再试一下中文输入。如果每次都要手动切那就把命令写进shell的启动配置里cmd用autorun注册表PowerShell用$PROFILE。输出乱码的情况更复杂一点。比如在PowerShell里运行一个Python脚本脚本打印中文字符终端显示乱码这通常是Python输出编码和终端不匹配。Windows Terminal没有单独的编码开关你要从源头解决Python脚本里显式做sys.stdout.reconfigure(encodingutf-8)或者在启动PowerShell时设置$env:PYTHONIOENCODINGutf-8。这个坑排查起来容易绕远我建议先做一个快速判断在终端里输入echo 中文如果能正常回显说明终端和后端shell的编码配合没问题如果还是乱码问题就在shell一层别在终端设置里来回翻。6.3 配置改了不生效保存后没有反应可能原因有三类优先级从高到低。第一JSON语法错误。多一个逗号、少一个引号整个配置都加载不了。这种时候终端不会回退到默认配置但界面上的可视化设置会打开失败还会弹一个错误提示。去文件里逐行检查尤其是最后一项后面不能有逗号。第二配置文件名或路径错误。如果你把settings.json复制到别的机器文件编码必须是UTF-8另存为ANSI会导致解析出乱码进而加载失败。第三改了defaults下面的配置但对应profile里也单独写了同名属性profile里的优先级更高把defaults里的覆盖了。所以排查时先看是不是有局部配置覆盖全局配置的情况比如你要改全局透明度却在某个profile里单独写了useAcrylicfalse那全局配置自然不生效。还有一个很容易忽略的点Windows Terminal支持配置热加载保存文件后几毫秒内就生效。但如果界面没有任何变化按CtrlShiftF5刷新一下当前标签页有时候是渲染层缓存问题不是配置问题。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建一个软链接。这样无论在哪台机器更新了配置都会自动同步到所有环境。我第一次重装系统只花了几下复制粘贴就恢复了全部终端习惯那种感觉确实很爽。终端是很私人的工具没有绝对正确的配置只有最适合你工作流的配置一边用一边调慢慢就会变成你最顺手的形态。