Windows Terminal 终极教程:从安装、配置到高效使用
在 Windows 生态系统中,命令行界面(CLI)一直是开发者、系统管理员和高级用户不可或缺的工具。然而,多年来,Windows 自带的命令提示符(cmd.exe)和 PowerShell 控制台在功能和用户体验上,与 Linux 和 macOS 下的终端模拟器相比,显得有些落后。为了弥补这一差距并提供一个现代化、功能强大且高度可定制的命令行体验,微软推出了 Windows Terminal。
Windows Terminal 不仅仅是一个简单的外壳,它是一个全新的、现代化的终端应用程序,能够承载多种命令行环境,如命令提示符、PowerShell、适用于 Linux 的 Windows 子系统(WSL)、Azure Cloud Shell 等。它集成了选项卡、窗格、Unicode 和 UTF-8 字符支持、GPU 加速的文本渲染引擎以及丰富的主题和自定义选项。本教程将带您从零开始,全面了解 Windows Terminal 的安装、核心配置以及一些高级使用技巧,助您打造个性化且高效的命令行工作环境。
一、 为什么选择 Windows Terminal?
在深入教程之前,让我们先简要了解一下 Windows Terminal 相较于传统 cmd 或 PowerShell 控制台的优势:
- 多选项卡支持 (Tabs): 可以在单个窗口中打开多个命令行会话,轻松切换,告别杂乱的窗口。
- 多窗格支持 (Panes): 在同一个选项卡内分割窗口,同时查看和操作多个命令行实例,极大提升多任务处理效率。
- 丰富的自定义能力: 从字体、配色方案、背景(包括透明/毛玻璃效果和背景图片)到快捷键,几乎所有方面都可以个性化配置。
- 统一管理多种 Shell: 无缝集成 Command Prompt, PowerShell, PowerShell Core, WSL (Ubuntu, Debian, etc.), Azure Cloud Shell 等,方便在不同环境间切换。
- 现代化的渲染引擎: 基于 DirectX 的 GPU 加速文本渲染,支持 Unicode、UTF-8 字符(包括 Emoji)、Powerline 字体等,显示效果更佳,性能更流畅。
- 命令面板 (Command Palette): 类似 VS Code 的命令面板(
Ctrl+Shift+P),快速搜索和执行各种命令和操作。 - 开源与社区驱动: Windows Terminal 在 GitHub 上开源,开发活跃,社区贡献丰富,可以快速获得新功能和问题修复。
二、 安装 Windows Terminal
获取 Windows Terminal 非常简单,主要有以下几种方式:
方法一:通过 Microsoft Store (推荐)
这是最简单、最推荐的方式,可以自动获取更新。
- 打开 Windows 上的 Microsoft Store 应用程序。
- 在搜索栏中输入 “Windows Terminal”。
- 找到由 Microsoft Corporation 发布的 “Windows Terminal” 应用。
- 点击 “获取” 或 “安装” 按钮。
- 等待下载和安装完成。安装后,你可以在开始菜单中找到它。
方法二:通过 Windows 程序包管理器 (winget)
如果你喜欢使用命令行进行软件管理,winget 是一个不错的选择(Windows 10 1709 及更高版本内置或可安装)。
- 打开现有的命令提示符或 PowerShell。
- 执行以下命令来搜索 Windows Terminal:
bash
winget search "Windows Terminal" - 找到
Microsoft.WindowsTerminal这个包。 - 执行以下命令进行安装:
bash
winget install -e --id Microsoft.WindowsTerminal winget会自动下载并安装最新稳定版。
方法三:通过 GitHub Releases (适用于预览版或离线安装)
如果你想尝试最新的预览版功能,或者需要在无法访问 Microsoft Store 的环境中安装,可以从 GitHub 下载。
- 访问 Windows Terminal 的 GitHub Releases 页面:https://github.com/microsoft/terminal/releases
- 找到你想要安装的版本(通常选择最新的稳定版或预览版 “Pre-release”)。
- 在 “Assets” 部分,下载
.msixbundle文件。 - 下载完成后,双击
.msixbundle文件,按照提示进行安装。可能需要先启用 “开发人员模式”(在 Windows 设置 -> 更新和安全 -> 开发者选项中)。
三、 初识 Windows Terminal:界面与基本操作
首次启动 Windows Terminal,你会看到一个简洁的界面:
- 选项卡栏 (Tab Bar): 位于顶部,显示当前打开的命令行会话。默认通常会打开一个 PowerShell 选项卡。
- 新建选项卡按钮 (+): 点击加号可以快速打开默认配置的命令行会话。
- 下拉菜单 (Dropdown Menu): 点击加号旁边的向下箭头,会显示一个列表,包含所有已配置的命令行配置文件(Profiles),你可以选择性地打开特定类型的会话(如 CMD, WSL Ubuntu 等)。这里还包含了进入 “设置 (Settings)” 和 “关于 (About)” 的入口。
- 主终端区域: 显示命令行输出和接受输入的地方。
基本操作:
- 新建选项卡: 点击
+号或使用快捷键Ctrl+Shift+T。 - 关闭选项卡: 点击选项卡上的
X号或使用快捷键Ctrl+Shift+W。 - 切换选项卡: 点击选项卡,或使用
Ctrl+Tab/Ctrl+Shift+Tab,或者Ctrl+Alt+数字键(切换到第 N 个选项卡)。 - 复制文本: 默认情况下,选中即复制。也可以配置为使用
Ctrl+Shift+C(下文会讲)。 - 粘贴文本: 使用
Ctrl+Shift+V或鼠标右键(可配置)。 - 打开设置: 点击下拉菜单中的 “设置” 或使用快捷键
Ctrl+,。 - 打开命令面板: 使用快捷键
Ctrl+Shift+P。
四、 核心配置:settings.json 详解
Windows Terminal 的强大之处在于其高度可配置性。所有的配置都存储在一个名为 settings.json 的 JSON 文件中。虽然新版本提供了图形化的设置界面,但直接编辑 JSON 文件仍然提供了最全面、最精细的控制。
如何访问 settings.json:
- 打开 Windows Terminal。
- 点击下拉菜单(
V形状的按钮)。 - 选择 “设置 (Settings)” (
Ctrl+,)。 - 在打开的设置界面的左下角,点击 “打开 JSON 文件 (Open JSON file)”。
这会用你系统中配置的默认 JSON 编辑器(通常是 VS Code、Notepad++ 或记事本)打开 settings.json 文件。
settings.json 的基本结构:
json
{
"$schema": "https://aka.ms/terminal-profiles-schema", // JSON Schema 定义,提供编辑器智能提示
"defaultProfile": "{GUID-of-your-default-profile}", // 默认启动的配置文件 GUID
"profiles": {
"defaults": {
// 应用于所有配置文件的默认设置 (除非被具体配置文件覆盖)
"font": { "face": "Cascadia Mono PL", "size": 11 },
"colorScheme": "Campbell",
"useAcrylic": true,
"acrylicOpacity": 0.75
},
"list": [
// 具体的配置文件列表
{
"guid": "{GUID-for-powershell}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false,
// ... 其他 PowerShell 特定设置
},
{
"guid": "{GUID-for-cmd}",
"name": "Command Prompt",
"commandline": "cmd.exe",
"hidden": false,
// ... 其他 CMD 特定设置
},
{
"guid": "{GUID-for-wsl-ubuntu}",
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl", // 指示这是 WSL 发行版
"hidden": false,
// ... 其他 WSL 特定设置
}
// ... 其他配置文件 (Azure Cloud Shell, 自定义配置等)
]
},
"schemes": [
// 颜色方案定义列表
{
"name": "Campbell",
"background": "#0C0C0C",
"foreground": "#CCCCCC",
// ... 其他颜色定义
},
{
"name": "Solarized Dark",
// ... Solarized Dark 的颜色定义
}
// ... 其他颜色方案
],
"actions": [
// 自定义快捷键绑定列表
{ "command": "copy", "keys": "ctrl+c" }, // 示例:将复制改为 Ctrl+C
{ "command": "paste", "keys": "ctrl+v" }, // 示例:将粘贴改为 Ctrl+V
{ "command": { "action": "splitPane", "split": "auto" }, "keys": "alt+shift+d" }
// ... 其他快捷键绑定
],
// 其他全局设置...
"copyOnSelect": false, // 禁用选中即复制
"copyFormatting": "none", // 复制时不包含格式
"launchMode": "default", // 启动模式 ("default", "maximized", "fullscreen")
"initialCols": 120, // 初始列数
"initialRows": 30, // 初始行数
"alwaysShowTabs": true, // 即使只有一个选项卡也显示标签栏
"theme": "system" // 跟随系统主题 ("system", "light", "dark")
}
下面我们详细解析各个主要部分:
1. 全局设置 (Global Settings)
这些设置位于 JSON 文件的顶层,影响整个 Windows Terminal 应用程序的行为。一些常用的全局设置包括:
defaultProfile: 指定启动 Windows Terminal 或点击+按钮时默认打开的配置文件的guid。guid是每个配置文件的唯一标识符,可以在profiles.list中找到。copyOnSelect:true(默认) 表示选中即复制,false表示需要按快捷键复制。copyFormatting: 控制复制时是否包含文本格式(如颜色)。"none","html","rtf","all"。推荐设为"none"或根据需要选择。launchMode: 启动时窗口模式。"default"(普通窗口),"maximized"(最大化),"fullscreen"(全屏)。initialCols/initialRows: 新窗口或选项卡的初始宽度(字符数)和高度(行数)。alwaysShowTabs:true(默认) 即使只有一个选项卡也显示,false则隐藏。showTerminalTitleInTitlebar:true(默认) 在窗口标题栏显示当前活动选项卡的标题。theme: 应用的主题。"system"跟随系统亮/暗模式,"light"强制亮色,"dark"强制暗色。tabWidthMode: 选项卡宽度模式。"equal"(所有标签等宽),"titleLength"(根据标题长度),"compact"(紧凑模式,仅显示图标)。disabledProfileSources: 禁用某些自动检测到的配置文件来源,例如["Windows.Terminal.Wsl", "Windows.Terminal.Azure"]可以阻止自动添加 WSL 和 Azure Cloud Shell 配置文件。
2. 配置文件 (Profiles)
profiles 对象是配置的核心,它包含两部分:defaults 和 list。
-
profiles.defaults: 这里定义的设置将应用于profiles.list中的所有配置文件,除非某个配置文件明确覆盖了该设置。这对于设置统一的字体、配色方案等非常有用。 -
profiles.list: 这是一个数组,包含了你可以在 Windows Terminal 中启动的所有命令行环境的配置。每个配置都是一个 JSON 对象,至少需要包含guid(唯一标识符,可以用 PowerShell 命令[guid]::NewGuid()生成或保持自动生成的) 和name(显示在下拉菜单中的名称)。常用配置文件属性:
guid:{string}唯一标识符。name:string显示名称。commandline:string启动该配置文件时执行的命令。例如"powershell.exe","cmd.exe","wsl.exe -d Ubuntu"(启动名为 Ubuntu 的 WSL 发行版)。startingDirectory:string启动时的初始目录。可以是绝对路径 ("C:\\Users\\YourUser\\Projects") 或 WSL 路径 ("//wsl$/Ubuntu/home/youruser"),或者"."(表示 WT 进程的当前目录),或者null(使用命令行的默认目录)。icon:string显示在选项卡和下拉菜单中的图标路径。可以是.ico,.png,.jpg文件路径,或者是嵌入的资源 ("ms-appx:///..."),甚至可以是 Emoji。hidden:boolean如果设为true,该配置文件将不会出现在下拉菜单中。font:object覆盖profiles.defaults中的字体设置。包含face(字体名称,如"Fira Code","Consolas"),size(字号),weight(字重,如"normal","bold","thin"或数字 100-900)。确保你使用的字体已经安装在系统中。推荐使用 Nerd Fonts 或 Powerline
兼容字体以获得更好的图标支持(如用于 Oh My Posh)。colorScheme:string应用于此配置文件的颜色方案名称,必须与schemes数组中定义的某个方案名称匹配。useAcrylic:boolean是否启用类似毛玻璃的透明效果 (需要 Windows 支持)。acrylicOpacity:number(0 到 1 之间) 透明度,越小越透明。backgroundImage:string背景图片的路径。可以是本地文件路径或 URL。设为"desktopWallpaper"可以使用当前桌面壁纸。backgroundImageOpacity:number(0 到 1 之间) 背景图片的不透明度。backgroundImageStretchMode:string背景图片拉伸模式 ("none","fill","uniform","uniformToFill").backgroundImageAlignment:string背景图片对齐方式 ("center","left","top","right","bottom","topLeft", etc.).antialiasingMode:string文本抗锯齿模式 ("grayscale","cleartype","aliased").cursorShape:string光标形状 ("bar","vintage","underscore","filledBox","emptyBox").cursorHeight:number(1-100) 光标高度百分比(仅当cursorShape为"bar"或"vintage"时)。suppressApplicationTitle:boolean如果为true,则阻止命令行程序(如vim)修改选项卡标题。tabTitle:string自定义选项卡标题,可以覆盖由 shell 或suppressApplicationTitle控制的标题。padding:string内部边距,格式为"H,V"或"L,T,R,B"(单位是像素或 DIPS,如"8"或"0, 8, 0, 8").
添加自定义配置文件示例 (如 Git Bash):
假设你的 Git Bash 安装在C:\Program Files\Git\bin\bash.exe。可以在profiles.list中添加如下配置:json
{
"guid": "{your-new-guid}", // 生成一个新的 GUID
"name": "Git Bash",
"commandline": "\"C:\\Program Files\\Git\\bin\\bash.exe\" -i -l", // 注意路径转义和参数
"icon": "\"C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico\"", // Git 安装自带的图标
"startingDirectory": "%USERPROFILE%", // 启动时在用户主目录
"font": { "face": "Fira Code", "size": 10 },
"colorScheme": "One Half Dark" // 假设你定义了名为 "One Half Dark" 的颜色方案
}
3. 颜色方案 (Color Schemes)
schemes 数组定义了多个颜色方案,每个方案是一个包含 name 和一系列颜色定义的 JSON 对象。你可以在这里创建自己的配色,或者从网上导入(例如 Windows Terminal Themes 或 terminal.sexy)。
每个颜色方案对象包含:
name:string方案的唯一名称,用于在profiles中引用。foreground:string默认前景色 (文本颜色)。background:string默认背景色。selectionBackground:string选中文本的背景色。cursorColor:string光标颜色。- 以及 ANSI 颜色序列:
black,red,green,yellow,blue,purple,cyan,white(以及它们对应的亮色版本brightBlack,brightRed, etc.)。
所有颜色值都应使用十六进制格式 ("#RRGGBB" 或 "#RGB").
示例:添加一个名为 “My Custom Theme” 的方案
json
"schemes": [
// ... 其他已有方案
{
"name": "My Custom Theme",
"background": "#1E1E1E",
"foreground": "#D4D4D4",
"cursorColor": "#FFFFFF",
"selectionBackground": "#3A3D41",
"black": "#000000",
"brightBlack": "#555555",
"red": "#CD3131",
"brightRed": "#F14C4C",
"green": "#0DFC79",
"brightGreen": "#23D18B",
"yellow": "#E5E510",
"brightYellow": "#F5F543",
"blue": "#3B78FF",
"brightBlue": "#5EDFFF",
"purple": "#BC3FBC",
"brightPurple": "#E54FE5",
"cyan": "#29B8DB",
"brightCyan": "#42F1F4",
"white": "#E5E5E5",
"brightWhite": "#FFFFFF"
}
],
添加后,就可以在任何 profile 的 colorScheme 属性中设置为 "My Custom Theme"。
4. 快捷键绑定 (Actions / Keybindings)
actions 数组允许你自定义或添加键盘快捷键来执行 Windows Terminal 的各种操作。每个绑定是一个 JSON 对象,包含 command 和 keys。
keys:string定义触发该操作的快捷键组合。格式为modifier[+modifier...]+key。修饰键包括ctrl,shift,alt,win。例如"ctrl+shift+t","alt+left"。-
command:string或object定义要执行的操作。常用命令 (简单字符串形式):
*"closePane": 关闭当前窗格。
*"closeTab": 关闭当前选项卡。
*"closeWindow": 关闭窗口。
*"copy": 复制选中文本 (如果copyOnSelect为false)。
*"duplicateTab": 复制当前选项卡。
*"find": 打开搜索框。
*"newTab": 打开默认配置文件的新选项卡。
*"nextTab": 切换到下一个选项卡。
*"openSettings": 打开设置 (JSON 文件或 UI)。
*"paste": 粘贴剪贴板内容。
*"prevTab": 切换到上一个选项卡。
*"toggleFocusMode": 切换专注模式 (隐藏选项卡和标题栏)。
*"toggleFullscreen": 切换全屏模式。带参数的命令 (对象形式):
需要使用{ "action": "commandName", ...parameters }的格式。
*{ "action": "copy", "singleLine": false, "copyFormatting": "none" }: 复制命令,带参数。
*{ "action": "newTab", "profile": "ProfileName or GUID" }: 打开指定配置文件的新选项卡。
*{ "action": "newTab", "index": 0 }: 在第一个位置打开新选项卡。
*{ "action": "switchToTab", "index": N }: 切换到第 N 个选项卡 (索引从 0 开始)。
*{ "action": "splitPane", "split": "horizontal" | "vertical" | "auto" }: 分割窗格。"auto"会智能选择方向。
*{ "action": "splitPane", "profile": "ProfileName or GUID", "split": "vertical" }: 按指定方向分割,并在新窗格中打开特定配置文件。
*{ "action": "moveFocus", "direction": "left" | "right" | "up" | "down" }: 在窗格之间移动焦点。
*{ "action": "resizePane", "direction": "left" | "right" | "up" | "down" }: 调整窗格大小。
*{ "action": "sendInput", "input": "some text\\n" }: 向当前终端发送文本输入 (\n表示回车)。
示例:修改复制粘贴快捷键为 Ctrl+C / Ctrl+V
这需要先解绑可能冲突的 Ctrl+C (通常是中断信号)。
“`json
“actions”: [
// 解绑默认的 Ctrl+C (中断) – 注意: 这会影响中断命令行的能力,慎用
// 或者保留 Ctrl+C 中断,使用 Ctrl+Shift+C 复制
{ “command”: “unbound”, “keys”: “ctrl+c” }, // 如果你确定要覆盖中断信号
// 绑定 Ctrl+C 为复制
{ "command": { "action": "copy", "singleLine": false, "copyFormatting": "none" }, "keys": "ctrl+c" },
// 绑定 Ctrl+V 为粘贴
{ "command": "paste", "keys": "ctrl+v" },
// 重新绑定一个快捷键用于中断 (如果需要)
{ "command": null, "keys": "ctrl+break" }, // Ctrl+Break 通常是备用的中断信号
// ... 其他自定义快捷键
{ "command": { "action": "splitPane", "split": "auto" }, "keys": "alt+shift+d" }, // 示例:Alt+Shift+D 分割窗格
{ "command": { "action": "moveFocus", "direction": "left" }, "keys": "alt+left" }, // Alt+左箭头 向左移动焦点
{ "command": { "action": "moveFocus", "direction": "right" }, "keys": "alt+right" } // Alt+右箭头 向右移动焦点
]
``settings.json` 后,保存文件。Windows Terminal 通常会自动检测到更改并重新加载配置。如果遇到问题(如 JSON 格式错误),Terminal 启动时可能会显示错误信息并尝试使用默认配置。仔细检查 JSON 语法(括号匹配、逗号等)。
**重要提示:** 修改
五、 进阶使用与技巧
1. 窗格管理 (Panes)
- 分割窗格:
Alt+Shift++(加号): 水平分割 (上下)。Alt+Shift+-(减号): 垂直分割 (左右)。Alt+Shift+D: 使用splitPaneaction (需要配置,如上例) 按auto模式分割。- 按住
Alt点击下拉菜单中的某个配置文件:在新窗格中打开该配置文件。
- 导航窗格:
Alt + 方向键(上/下/左/右): 在相邻窗格间移动焦点。
- 调整窗格大小:
Alt+Shift + 方向键: 调整当前窗格的边界。
- 关闭窗格:
- 在窗格内输入
exit或按Ctrl+D(取决于 shell)。 - 使用
closePaneaction 的快捷键 (默认Ctrl+Shift+W,但通常关闭的是选项卡,需要自定义一个专门给窗格的)。
- 在窗格内输入
2. 命令面板 (Command Palette)
按 Ctrl+Shift+P 打开命令面板。这是一个强大的模糊搜索框,可以快速找到并执行 Windows Terminal 的几乎所有可用操作,包括:
- 打开新选项卡 (可以输入配置文件名称)
- 分割窗格
- 切换主题
- 调整字体大小
- 聚焦特定窗格
- … 以及
actions中定义的所有命令
对于不常用的操作或忘记快捷键时,命令面板非常方便。
3. 搜索功能
按 Ctrl+Shift+F 打开终端内的搜索框,可以向上或向下搜索缓冲区中的文本内容,支持区分大小写和正则表达式。
4. 启动参数 (wt.exe)
你可以在运行 wt.exe 时添加参数来控制其启动行为:
wt -p "ProfileName": 启动时打开指定名称的配置文件。wt -d "C:\\path\\to\\directory": 在指定目录下启动默认配置文件。wt new-tab -p "PowerShell" ; split-pane -p "Ubuntu": 启动时先打开一个 PowerShell 选项卡,然后在该选项卡内垂直分割出一个 Ubuntu 窗格。wt --maximized: 以最大化模式启动。wt --fullscreen: 以全屏模式启动。
这些参数可以组合使用,并且可以通过创建快捷方式来固化启动配置。
5. 与 Shell 美化工具集成 (Oh My Posh, Starship等)
Windows Terminal 提供了优秀的显示基础,但命令行的提示符(Prompt)样式是由具体的 Shell (如 PowerShell, Bash) 控制的。你可以通过安装 Oh My Posh (PowerShell/Bash/Zsh 等) 或 Starship (跨 Shell) 这类工具来极大地美化你的提示符,显示 Git状态、路径、环境信息、执行时间等,并配合 Nerd Fonts 显示丰富的图标。
安装和配置这些工具通常涉及:
* 安装对应的程序包 (如通过 winget, scoop, brew, npm 等)。
* 修改 Shell 的配置文件 ($PROFILE for PowerShell, .bashrc for Bash, .zshrc for Zsh) 来加载主题。
* 确保在 Windows Terminal 的配置文件中使用了兼容的 Nerd Font (如 Fira Code Nerd Font, MesloLGS NF)。
这部分内容超出了 Windows Terminal 本身的配置,但它们是打造现代化命令行体验的重要补充。
六、 故障排除与资源
- JSON 格式错误: 如果保存
settings.json后 Terminal 无法启动或配置未生效,很可能是 JSON 语法错误。使用在线 JSON 验证器或编辑器的 linting 功能检查文件。注意逗号、括号、引号的正确使用。 - 找不到字体: 确保
font.face中指定的字体已经正确安装在 Windows 系统中,并且名称完全匹配。 - WSL 配置文件问题: 确保 WSL 发行版已正确安装并且可以在旧版控制台中启动。有时需要重启 WT 或系统。
- 官方文档: Microsoft 提供了非常详细的 Windows Terminal 官方文档:https://aka.ms/terminal-docs
- GitHub 仓库: 可以报告 Bug、提出功能建议或查看源代码:https://github.com/microsoft/terminal
- 社区资源: 博客文章、教程视频、主题分享网站等。
七、 总结
Windows Terminal 是微软为 Windows 平台带来的革命性命令行工具。它不仅弥补了与 *nix 系统在终端体验上的差距,更凭借其现代化的设计、强大的功能和无与伦比的可定制性,成为了 Windows 用户进行命令行操作的首选。
通过本教程,我们详细探讨了 Windows Terminal 的安装方法、基本界面操作,并深入解析了核心配置文件 settings.json 的结构与各个关键部分的配置选项,包括全局设置、多样的配置文件定制(字体、颜色、背景、启动命令等)、颜色方案的创建与应用,以及快捷键的自定义。此外,还介绍了一些进阶使用技巧,如窗格管理、命令面板、启动参数和与 Shell 美化工具的集成。
掌握 Windows Terminal 的配置,意味着你可以根据自己的工作流和审美偏好,打造一个既美观又高效的命令行环境。不要害怕尝试修改 settings.json,备份好原始文件,大胆地去探索各种配置组合,让 Windows Terminal 真正成为你手中的利器。随着项目的不断发展,未来还会有更多令人兴奋的功能加入,持续关注其更新,享受现代化的命令行体验吧!