WezTerm配置与使用指南—Windows、PowerShell、WSL与多窗格工作流
WezTerm 是一个使用 Rust 编写、支持 GPU 加速和 Lua 配置的跨平台终端模拟器。本文介绍的不是 WezTerm 默认配置,而是基于 KevinSilvester/wezterm-config 调整后的 Windows 配置。它将 PowerShell 7 作为默认 Shell,同时接入 Windows PowerShell、Command Prompt、Git Bash 和 Ubuntu WSL,并提供背景图片、状态栏、标签页状态、多窗格操作以及一套以 Alt 为核心的快捷键。
本文以当前实际安装环境为准:
| 项目 | 当前配置 |
|---|---|
| 操作系统 | Windows |
| WezTerm | 20260729-115229-46a166d6 |
| 配置来源 | KevinSilvester/wezterm-config,提交 052853e |
| 配置目录 | C:\Users\li'xiao\.config\wezterm |
| 默认 Shell | PowerShell 7 |
| WSL | Ubuntu,用户 lixiao,登录 Shell 为 Bash |
| Git Bash | E:\Git\bin\bash.exe |
| 字体 | JetBrainsMono Nerd Font |
如果在其他计算机上使用本文,Shell 路径、WSL 发行版名称和用户名必须按照实际环境修改,不能原样复制。
一、先理解 WezTerm 的工作模型
1. Window、Tab 与 Pane
WezTerm 的界面可以分为三层:
1 | Window(窗口) |
- Window 是一个独立的 Windows 桌面窗口。
- Tab 是窗口顶部的标签页,一个窗口可以包含多个 Tab。
- Pane 是 Tab 内部的终端区域,一个 Tab 可以继续拆分为多个 Pane。
这三个概念对应三组不同操作。例如,Alt+N 新建 Window,Alt+T 新建 Tab,Alt+\ 拆分 Pane。关闭 Pane 和关闭 Tab 也使用不同快捷键。
2. Shell、Domain 与 Launcher
Shell 是 Pane 中实际运行的命令解释器,例如 PowerShell 7 或 Bash。Domain 则描述 Shell 在哪里运行:
DefaultDomain表示 Windows 本地环境;wsl:ubuntu-bash表示 Ubuntu WSL 环境;- 配置还可以扩展 SSH Domain 和 Unix Domain。
Domain 不只是启动命令的别名。WezTerm 可以借助 Domain 和 Shell Integration 跟踪当前工作目录,使同一 Domain 中创建的新 Tab 或 Pane 更容易延续原环境。
Launcher 是统一的启动入口。当前配置既可以通过 F3 打开 WezTerm 内置 Launcher,也可以右键单击标签栏的 + 按钮,打开根据本机 Shell 和 Domain 生成的自定义菜单。
二、配置目录与模块结构
WezTerm 会在 Windows 用户目录中查找配置。当前配置入口为:
1 | C:\Users\li'xiao\.config\wezterm\wezterm.lua |
官方文档允许复杂配置放在 $HOME/.config/wezterm/wezterm.lua,因此不需要再创建 %USERPROFILE%\.wezterm.lua。当前目录的主要结构如下:
1 | .config/wezterm/ |
入口文件先扫描 backdrops 目录并随机选择一张图片,再注册界面事件,最后依次合并外观、快捷键、Domain、字体、通用行为和启动配置。
配置启用了:
1 | automatically_reload_config = true |
保存 Lua 文件后,WezTerm 会自动重新加载大多数配置。由于本配置同时设置了 disable_default_key_bindings = true,WezTerm 的默认快捷键已被整体禁用,官方默认的 Ctrl+Shift+R 不能被假定为仍然有效。通常只需保存文件并等待自动加载;如果出现错误,可以使用后文的命令行验证方法。
三、启动后的界面行为
1. 默认启动 PowerShell 7
Windows 本地默认程序为:
1 | default_prog = { |
因此直接启动 WezTerm 时会进入 PowerShell 7,而不是传统的 Windows PowerShell。-NoLogo 只关闭启动横幅,不会跳过 PowerShell Profile。
2. 窗口自动最大化
gui-startup 事件会创建窗口并立即执行最大化。它与 F11 全屏不同:
- 最大化仍然保留系统窗口边界和任务栏行为;
- 全屏由
F11切换,终端会占用整个屏幕。
3. 字体、配色与 GPU
当前字体为中等字重的 JetBrainsMono Nerd Font,Windows 字号为 9.75。Nerd Font 不只是外观选择,状态栏、标签页和启动菜单中的图标也依赖其扩展字形。字体缺失时,普通文字可能回退到内置字体,但图标可能显示为方框。
配色以 Catppuccin Mocha 为基础进行了调整。渲染配置为:
1 | max_fps = 120 |
GPU 选择器会枚举本机适配器并优先使用性能更高的组合。该设置适合高刷新率显示器,但会增加一定的 GPU 使用率。遇到黑屏、闪烁、驱动兼容问题时,可以临时将 config/appearance.lua 中的 front_end 改为 OpenGL,保存后重新验证。
4. 标签栏与状态栏
标签栏始终显示,即使当前只有一个 Tab。每个标签最多使用 23 列宽度,并根据运行环境显示:
- 当前进程和终端标题;
- WSL、管理员终端、调试面板、选择器等状态图标;
- 后台任务的进度或错误状态;
- 非活动 Tab 中尚未查看的输出数量。
右侧状态栏每秒更新一次,显示星期、时间和电池状态;没有电池的桌面设备只显示时间。左侧状态栏平时为空,在 Leader 键或 Key Table 激活时显示当前按键模式,便于判断后续按键会由哪一组规则处理。
四、快捷键记忆规则
这套配置没有沿用 WezTerm 默认快捷键,而是定义了两个跨平台修饰键:
| 配置名称 | Windows/Linux | macOS | 本文写法 |
|---|---|---|---|
SUPER |
Alt |
Command |
Alt |
SUPER_REV |
Alt+Ctrl |
Command+Ctrl |
Alt+Ctrl |
Windows 下可以先记住以下规律:
Alt:直接操作当前窗口、Tab 或 Pane;Alt+Ctrl:反向操作、移动操作或进入 WSL;Alt+Ctrl+Space:Leader 键,用于进入持续的尺寸调整模式。
Leader 键自身的等待时间为 1 秒。按下 Alt+Ctrl+Space 后,需要在 1 秒内继续按 F 或 P。进入对应 Key Table 后,每次有效按键都会重新计算 1 秒超时。
五、启动器、命令面板与常用入口
| 快捷键或操作 | 功能 |
|---|---|
F1 |
进入 Copy Mode |
F2 |
打开 Command Palette |
F3 |
打开完整 Launcher |
F4 |
只显示当前窗口中的 Tab |
F5 |
只显示 Workspace |
F11 |
切换全屏 |
F12 |
打开 Debug Overlay |
左键单击 + |
按默认行为新建 Tab |
右键单击 + |
打开自定义 Shell/Domain 选择器 |
当前自定义启动菜单包含:
1 | PowerShell 7 |
在 Launcher 或选择器中,可以直接输入文字过滤,使用方向键选择,按 Enter 确认,按 Esc 取消。F2 的 Command Palette 适合查找没有分配固定快捷键的 WezTerm 动作;F12 则主要用于检查运行时日志、配置错误和事件输出。
六、Window 与 Tab 操作
1. Window
| 快捷键 | 功能 |
|---|---|
Alt+N |
新建 WezTerm Window |
Alt+Ctrl+Enter |
最大化当前 Window |
F11 |
切换全屏 |
配置中还保留了使用 Alt+- 和 Alt+= 缩放窗口外部尺寸的代码,但它在 Windows 上会直接返回,不执行任何操作。这是为了规避 Windows 全屏状态判断异常导致的界面冻结。因此在当前环境中,不应把这两个按键当作可用的窗口缩放功能。
2. 创建与关闭 Tab
| 快捷键 | 功能 |
|---|---|
Alt+T |
在 Windows 本地 Default Domain 中新建 Tab,运行 PowerShell 7 |
Alt+Ctrl+T |
在 wsl:ubuntu-bash Domain 中新建 Ubuntu Bash Tab |
Alt+Ctrl+W |
关闭当前 Tab,不再二次确认 |
关闭动作设置了 confirm = false,误按后不会弹出确认框。关闭运行着编辑器、编译任务或远程会话的 Tab 前,应先确认任务状态。
3. 切换与移动 Tab
| 快捷键 | 功能 |
|---|---|
Alt+[ |
激活左侧 Tab |
Alt+] |
激活右侧 Tab |
Alt+Ctrl+[ |
将当前 Tab 向左移动 |
Alt+Ctrl+] |
将当前 Tab 向右移动 |
F4 |
通过列表选择 Tab |
方括号快捷键适合相邻 Tab,F4 更适合 Tab 较多、标题明确的场景。
4. 重命名与隐藏标签栏
| 快捷键 | 功能 |
|---|---|
Alt+0 |
输入并锁定当前 Tab 名称 |
Alt+Ctrl+0 |
取消手工名称,恢复动态标题 |
Alt+9 |
显示或隐藏标签栏 |
手工标题适合为长时间运行的工作区命名,例如 Blog、Backend 或 WSL Build。恢复动态标题后,标签页会重新根据前台进程和终端标题生成名称。
七、Pane 分屏工作流
1. 创建分屏
| 快捷键 | 结果 |
|---|---|
Alt+\ |
上下分屏,新 Pane 位于下方 |
Alt+Ctrl+\ |
左右分屏,新 Pane 位于右侧 |
这里最容易产生误解:WezTerm 的 SplitVertical 表示沿垂直方向把空间分成上下两部分,而 SplitHorizontal 表示沿水平方向分成左右两部分。两个动作都使用 CurrentPaneDomain,因此:
- 从 PowerShell Pane 分屏,新 Pane 继续运行 PowerShell;
- 从 Ubuntu WSL Pane 分屏,新 Pane 继续留在 WSL Domain。
2. 在 Pane 之间移动
方向键采用 Vim 的 H/J/K/L 习惯:
| 快捷键 | 焦点方向 |
|---|---|
Alt+Ctrl+H |
左 |
Alt+Ctrl+J |
下 |
Alt+Ctrl+K |
上 |
Alt+Ctrl+L |
右 |
这些按键移动的是输入焦点,不会改变 Pane 的位置。
3. 放大、关闭与交换 Pane
| 快捷键 | 功能 |
|---|---|
Alt+Enter |
放大当前 Pane;再次按下恢复布局 |
Alt+W |
关闭当前 Pane,不再二次确认 |
Alt+Ctrl+P |
给所有 Pane 显示数字,选择一个与当前 Pane 交换位置 |
Alt+Ctrl+P 使用 SwapWithActiveKeepFocus 模式。输入目标 Pane 上的数字后,两个 Pane 交换位置,焦点仍跟随原来的活动 Pane。按 Esc 可以退出而不交换。
4. 调整 Pane 大小
先按:
1 | Alt+Ctrl+Space |
再按:
1 | P |
左侧状态栏出现 RESIZE_PANE 后,可以连续使用:
| Key Table 按键 | 功能 |
|---|---|
H |
向左调整 1 个单元格 |
J |
向下调整 1 个单元格 |
K |
向上调整 1 个单元格 |
L |
向右调整 1 个单元格 |
Q 或 Esc |
退出 |
Key Table 会在最后一次有效按键 1 秒后自动退出,因此需要连续调整时可以按住或重复相应方向键。
八、字体、背景与阅读模式
1. 调整字体大小
依次按下:
1 | Alt+Ctrl+Space → F |
进入 RESIZE_FONT 后使用:
| Key Table 按键 | 功能 |
|---|---|
K |
增大字体 |
J |
减小字体 |
R |
恢复配置字号 9.75 |
Q 或 Esc |
退出 |
这里调整的是终端字体,而不是 Window 的物理宽高。配置关闭了“改变字体时同步改变窗口尺寸”的行为,因此字体放大后可见的行列数量会减少,窗口外部大小保持不变。
2. 背景图片
| 快捷键 | 功能 |
|---|---|
Alt+/ |
随机选择一张背景 |
Alt+, |
切换到上一张背景 |
Alt+. |
切换到下一张背景 |
Alt+Ctrl+/ |
打开模糊搜索,指定背景图片 |
Alt+B |
在背景图片与纯色专注模式之间切换 |
背景图片来自:
1 | C:\Users\li'xiao\.config\wezterm\backdrops |
扫描规则支持 jpg、jpeg、png、gif、bmp、ico、tiff、pnm、dds 和 tga。添加图片后保存任意配置文件或重新启动 WezTerm,即可重新扫描。
不要将 backdrops 目录清空。当前入口文件在扫描后会立即调用 random();如果图片数量为零,随机选择过程可能导致配置加载失败。若准备彻底移除背景功能,应同时修改 wezterm.lua 和 config/appearance.lua,而不只是删除图片。
纯色专注模式只对当前 Window 应用运行时覆盖,不会删除图片。它适合投屏、阅读大量日志或希望提高文字对比度的场景。
九、搜索、滚动、复制与链接
1. 终端内容搜索
按 Alt+F 打开不区分大小写的搜索模式,输入关键字后浏览匹配结果,按 Esc 退出。该功能搜索的是当前 Pane 的可见内容和 Scrollback,而不是磁盘上的文件。
当前 Scrollback 上限为:
1 | scrollback_lines = 20000 |
较长的构建日志可以在终端中回看,但不能将 Scrollback 当作永久日志文件。需要保留完整输出时,应由命令本身写入日志。
2. 滚动
| 快捷键 | 功能 |
|---|---|
Alt+U |
向上滚动 5 行 |
Alt+D |
向下滚动 5 行 |
PageUp |
向上滚动约 0.75 页 |
PageDown |
向下滚动约 0.75 页 |
3. 直接复制与粘贴
| 快捷键 | 功能 |
|---|---|
Ctrl+Shift+C |
复制当前选区到系统剪贴板 |
Ctrl+Shift+V |
从系统剪贴板粘贴 |
配置关闭了默认按键绑定,因此应以这两个显式绑定为准。
4. Copy Mode
F1 进入 Copy Mode。它允许完全通过键盘在 Scrollback 中移动和选择文本,常用按键如下:
| 按键 | 功能 |
|---|---|
H/J/K/L 或方向键 |
移动光标 |
W、B、E |
按单词向前、向后或移动到词尾 |
0 / $ |
行首 / 行尾 |
g / Shift+G |
Scrollback 顶部 / 底部 |
V |
按字符选择 |
Shift+V |
按整行选择 |
Ctrl+V |
矩形块选择 |
O |
切换到选区另一端 |
Y |
复制选区并退出 |
Q、Esc 或 Ctrl+C |
不复制并退出 |
一个完整操作示例:
1 | F1 进入 Copy Mode |
5. 打开 URL
配置提供两种方式:
- 按住
Ctrl并左键单击鼠标下方的链接; - 按
Alt+Ctrl+U,让 WezTerm 在当前 Pane 中识别 URL,选择后用系统默认程序打开。
链接规则可以识别普通 URL、圆括号、方括号、花括号和尖括号中的 URL,也可以将电子邮件地址识别为 mailto: 链接。
打开链接会调用系统关联程序。对于终端输出中的陌生域名、带令牌的 URL 或来自不可信命令的内容,应先检查目标地址,避免直接打开。
十、光标辅助与特殊输入
| 快捷键 | 功能 |
|---|---|
Alt+LeftArrow |
向 Shell 发送行首控制序列 |
Alt+RightArrow |
向 Shell 发送行尾控制序列 |
Alt+Backspace |
发送 Ctrl+U,尝试清空当前输入行 |
Ctrl+Shift+N |
输入 ♠ |
Ctrl+Shift+S |
输入 ‽ |
前三项通过 SendString 向前台程序发送控制序列,其效果取决于 Shell 或终端程序是否解释该序列。Alt+Backspace 在 Bash 中通常可以清空行,但在 PowerShell 或 Command Prompt 中不一定生效。
Ctrl+Shift+N 和 Ctrl+Shift+S 是原仓库保留的特殊字符输入绑定。它们不是“新建窗口”和“保存”,使用带有这类通用快捷键的终端应用时需要留意冲突;如果没有输入这两个字符的需求,可以从 config/bindings.lua 中删除对应两行。
十一、三种典型工作流
1. Windows 与 WSL 并行开发
1 | 启动 WezTerm |
适合在 PowerShell 中运行 Windows 工具,同时在 WSL 中执行 Linux 构建、包管理或脚本。
2. 单个 Tab 内运行服务与日志
1 | Alt+\ 上下分屏 |
可以将编辑器、开发服务器和测试日志放在同一个 Tab 中。因为分屏继承当前 Domain,从 WSL Pane 创建的新 Pane 不会意外回到 Windows。
3. 长日志定位与复制
1 | Alt+F 搜索错误关键字 |
搜索负责定位,Copy Mode 负责精确选择,两者比反复拖动鼠标更适合长 Scrollback。
十二、修改本机 Shell 与 WSL 配置
1. 修改默认 Shell
编辑:
1 | C:\Users\li'xiao\.config\wezterm\config\launch.lua |
Windows 部分当前使用绝对路径,以避免 PATH 差异:
1 | options.default_prog = { |
若 PowerShell、Git 或其他 Shell 安装到不同位置,应先使用 PowerShell 查找实际路径:
1 | Get-Command pwsh |
修改 launch_menu 时,只应保留本机存在的程序。无效路径通常不会阻止 WezTerm 主配置加载,但对应菜单项会启动失败。
2. 修改 WSL Domain
编辑:
1 | C:\Users\li'xiao\.config\wezterm\config\domains.lua |
当前定义为:
1 | { |
修改前先检查:
1 | wsl --list --verbose |
distribution 必须与 wsl --list --verbose 中的名称一致。若修改了 Domain 的 name,还必须同步修改 config/bindings.lua 中 Alt+Ctrl+T 对应的 DomainName,否则按键会引用不存在的 Domain。
3. 修改字体
编辑 config/fonts.lua 中的:
1 | local font_family = 'JetBrainsMono Nerd Font' |
修改前可以列出 WezTerm 实际识别的字体:
1 | wezterm ls-fonts --list-system |
验证指定字体和字形:
1 | wezterm ls-fonts --text 'ABC → λ 终端' |
输出中应显示目标字体的文件路径。中文通常由系统中文字体回退渲染,这是正常行为;Nerd Font 主要负责拉丁字符、编程符号和图标。
十三、配置验证与故障排查
1. Lua 配置加载失败
在 PowerShell 中运行:
1 | $config = "$env:USERPROFILE\.config\wezterm\wezterm.lua" |
成功时会输出当前有效快捷键;语法错误、模块加载失败或无效配置项会直接显示错误。WezTerm 官方文档说明,当前版本遇到配置解析错误时会显示错误并使用内置默认配置,因此“窗口仍能打开”并不能证明自定义配置已经生效。
如果图形界面可以打开,也可以按 F12 检查 Debug Overlay。
2. Nerd Font 图标显示为方框
检查字体解析:
1 | wezterm --config-file "$env:USERPROFILE\.config\wezterm\wezterm.lua" ` |
如果出现 Unable to load a font,说明字体名称与系统注册名称不一致,或者字体尚未安装。安装后应完全退出并重新启动旧的 WezTerm 进程,再次验证。
3. Alt+Ctrl+T 无法打开 WSL
依次检查:
1 | wsl --list --verbose |
然后核对:
domains.lua中的distribution是否为Ubuntu;username是否为lixiao;default_cwd是否为/home/lixiao;bindings.lua中的DomainName是否为wsl:ubuntu-bash。
发行版尚未完成首次初始化时,应先直接运行一次:
1 | wsl -d Ubuntu |
按照 WSL 提示创建 Linux 用户后,再使用 WezTerm Domain。
4. 背景切换报错
先确认目录中至少有一张受支持的图片:
1 | Get-ChildItem "$env:USERPROFILE\.config\wezterm\backdrops" |
图片扩展名不在扫描规则内、目录为空或图片损坏,都可能导致背景功能异常。可以先恢复仓库自带图片,再通过 F12 查看具体日志。
5. WebGpu 黑屏或闪烁
先在 config/appearance.lua 中将:
1 | front_end = 'WebGpu' |
临时改为:
1 | front_end = 'OpenGL' |
保存后重新运行配置验证。若 OpenGL 正常,问题通常与 WebGPU 后端、显卡驱动或适配器选择有关。不要在没有记录原值的情况下同时修改多个 GPU 选项,否则难以定位是哪一项产生影响。
6. 查看当前所有有效快捷键
1 | wezterm --config-file "$env:USERPROFILE\.config\wezterm\wezterm.lua" show-keys |
查看可复制为 Lua 的按键表:
1 | wezterm --config-file "$env:USERPROFILE\.config\wezterm\wezterm.lua" ` |
这两条命令反映的是当前 WezTerm 版本和当前配置合并后的结果,比只阅读 README 更可靠。
十四、更新配置仓库
当前配置目录本身是一个 Git 仓库,但 launch.lua、domains.lua 和 bindings.lua 包含本机定制。直接执行 git pull 可能与上游修改冲突。
更新前先查看状态和上游差异:
1 | Set-Location "$env:USERPROFILE\.config\wezterm" |
建议先将本机修改提交到独立分支:
1 | git switch -c local/windows |
以后更新时可以在确认工作区干净后执行:
1 | git fetch origin |
Rebase 可能在上游也修改同一配置文件时暂停。应根据当前机器的 Shell、路径和 WSL 用户解决冲突,再运行 show-keys 和字体检查。不要用 git reset --hard 处理普通更新冲突,因为它会直接丢弃尚未保存的本机配置。
如果不准备维护 Git 历史,至少应在更新前复制以下三个文件到配置目录之外:
1 | config/launch.lua |
十五、快捷键速查
1. 通用、Window 与 Tab
| 快捷键 | 功能 |
|---|---|
F1 |
Copy Mode |
F2 |
Command Palette |
F3 |
完整 Launcher |
F4 |
Tab Launcher |
F5 |
Workspace Launcher |
F11 |
全屏 |
F12 |
Debug Overlay |
Alt+N |
新建 Window |
Alt+T |
新建 PowerShell 7 Tab |
Alt+Ctrl+T |
新建 Ubuntu WSL Tab |
Alt+Ctrl+W |
关闭 Tab |
Alt+[ / Alt+] |
切换 Tab |
Alt+Ctrl+[ / Alt+Ctrl+] |
移动 Tab |
Alt+0 / Alt+Ctrl+0 |
设置 / 重置 Tab 标题 |
Alt+9 |
显示 / 隐藏标签栏 |
2. Pane
| 快捷键 | 功能 |
|---|---|
Alt+\ |
上下分屏 |
Alt+Ctrl+\ |
左右分屏 |
Alt+Enter |
放大 / 恢复 Pane |
Alt+W |
关闭 Pane |
Alt+Ctrl+H/J/K/L |
切换 Pane |
Alt+Ctrl+P |
交换 Pane |
Leader → P → H/J/K/L |
调整 Pane 大小 |
3. 文本与外观
| 快捷键 | 功能 |
|---|---|
Ctrl+Shift+C/V |
复制 / 粘贴 |
Alt+F |
搜索终端内容 |
Alt+U/D |
上 / 下滚动 5 行 |
PageUp/PageDown |
按页滚动 |
Alt+Ctrl+U |
选择并打开 URL |
Ctrl+左键 |
打开鼠标下方的链接 |
Leader → F → K/J/R |
放大 / 缩小 / 重置字体 |
Alt+/ |
随机背景 |
Alt+, / Alt+. |
上一张 / 下一张背景 |
Alt+Ctrl+/ |
搜索背景 |
Alt+B |
切换纯色专注模式 |
十六、总结
这套配置的核心不是单纯改变终端外观,而是建立一套统一的工作模型:
1 | PowerShell 7 作为 Windows 默认环境 |
第一次使用时,优先掌握 F2、F3、Alt+T、Alt+Ctrl+T、两种分屏、Alt+Ctrl+H/J/K/L 和 F1。熟悉这些入口后,再逐步使用 Tab 重命名、背景选择、URL 快速打开和 Key Table。
配置文件是可执行的 Lua 代码,本机路径、Domain 名称和快捷键之间存在引用关系。修改时应一次只调整一个模块,保存后立即运行 show-keys 或打开 F12 验证。这样既能保留上游配置的完整功能,也能让 PowerShell、Git Bash 和 WSL 始终与当前机器的真实环境一致。
参考资料
[1] KevinSilvester/wezterm-config
[2] WezTerm 官方文档:Configuration
[4] WezTerm 官方文档:KeyAssignment
[7] WezTerm 官方文档:InputSelector
[8] WezTerm 官方文档:ActivateKeyTable








