Claude Code、Codex 这类 CLI 编程 Agent 越来越火,但在 Windows 上跑它们,体验经常差点意思。换了好几个终端之后,我最后停在 WezTerm 上------一个用 Rust 写的 GPU 加速终端模拟器 + 多路复用器,被不少人称作"Windows 上的 iTerm2 替代品"。今天和大家聊聊它的使用。
简介
WezTerm 由 Wez Furlong(@wez)开发,用 Rust 写的,GPU 加速,还是 MIT 开源,GitHub 上 28k+ Star,迭代一直挺活跃。
定位说白了:终端模拟器 + tmux 合体。复用、持久会话、远程连接全部内置,不用额外装任何软件。平台覆盖 Windows 10+、macOS、Linux、FreeBSD、NetBSD,跨平台行为一致------今天在公司 Windows 上调好的配置,回家 Mac 上原样能跑。
主要特性
| 特性 | 说明 |
|---|---|
| GPU 加速渲染 | true color、连字(ligatures)、彩色 Emoji、字体回退,渲染顺滑 |
| 内置多路复用 | pane/tab/window 复用,会话持久化,类 tmux 但不需要 tmux |
| 远程复用域 | 通过 SSH / TLS / Unix socket 连接远程 mux server,断线自动重连恢复会话 |
| 内置 SSH 客户端 | 原生 tab 式 SSH,还能自动读取 ~/.ssh/config |
| Lua 可编程配置 | 配置文件就是 Lua 脚本,支持热重载,可写逻辑、绑事件 |
| 终端图片协议 | iTerm2 / Kitty / Sixel 全支持,终端里直接看图(内置 imgcat) |
安装及配置
以 Windows 为例,其他平台官网都有对应方式。
- 先去官网 wezterm.org/installatio... 下载 Windows 便携版 zip(注意Nightly才是最新版本),解压到任意目录。

-
解压完成后,目录里文件不少,其中三个是主角:
wezterm-gui.exe:终端主程序,双击它就是启动终端;wezterm.exe:CLI 入口,wezterm cli、wezterm connect这些命令都走它;wezterm-mux-server.exe:多路复用服务,会话持久化靠它。
-
然后把解压目录加进用户环境变量 PATH,之后在任意终端里都能直接敲
wezterm。双击wezterm-gui.exe启动,首次进入看到的是一个干净的终端窗口:

- Windows 下配置文件路径是
%USERPROFILE%\.wezterm.lua,不存在就新建一个,写上三行最小配置即可起步;保存即热重载,不用重启终端。后面所有案例,改的都是这一个文件。
lua
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
return config
这或许是一个对你有用的开源项目,mall项目是一套基于 SpringBoot3 + Vue3 的电商系统(Github标星60K),后端支持多模块和微服务架构,采用Docker和K8S部署。包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员、支付等功能!
- Boot项目:github.com/macrozheng/...
- Cloud项目:github.com/macrozheng/...
- 文档网站:www.macrozheng.com
项目演示:
使用
所有案例都只改
.wezterm.lua这一个文件,保存即生效;每个案例 = 一小段配置 + 实测效果。
默认 Shell 换成 PowerShell
WezTerm 在 Windows 上默认拉起的是 cmd.exe,ls 这类 PowerShell 命令直接不认,从 Windows Terminal 迁移过来的人基本第一个踩的就是它。改法一行:
lua
config.default_prog = { 'powershell.exe', '-NoLogo' }
系统自带 5.1 就用 powershell.exe,装过 PowerShell 7 的推荐换成 pwsh.exe,体验更好。保存之后新开的窗口和 tab 就是 PowerShell 了:

配置默认工作目录
新窗口默认落在 C:\Users\用户名,但我天天要进的是项目目录。还是一行配置:
lua
config.default_cwd = 'D:\\developer\\workspace'
这里有个实踩的坑:Lua 字符串里反斜杠是转义符,写成 D:\developer\workspace 会直接报 invalid escape sequence,得用双反斜杠或者正斜杠 D:/developer/workspace。配好之后,开窗提示符直接就在工作目录:

省下每次开窗都要先 cd 一下,小配置大顺手。
Shift+Enter 映射换行
Claude Code 里 Shift+Enter 是换行。新版 WezTerm 对它有原生支持,如果你的版本里 Shift+Enter 还是直接提交,加一条键绑定把它映射成换行符:
lua
config.keys = {
{ key = 'Enter', mods = 'SHIFT', action = wezterm.action.SendString '\n' },
}
配好换行键,多行提示词随便打:

顺带提一个输入坑:WezTerm 里粘贴是 Ctrl+Shift+V,Windows Terminal 用户习惯的 Ctrl+V 不生效。真想绑成 Ctrl+V 也能自定义,代价是 Ctrl+C/V 就发不进 TUI 程序了,自己权衡。
字体与配色
跑 Agent 的终端一盯就是半天,字体和配色值得花两分钟调:
lua
config.font = wezterm.font('JetBrains Mono')
config.font_size = 14.0
config.color_scheme = 'Catppuccin Mocha'
WezTerm 内置 700 多款主题,官网 Color Schemes 页能逐款看预览图(如图是 Catppuccin Mocha),命令行里 wezterm ls-colors 也能列全。

不满意还可以用 config.colors 逐项覆盖,甚至用 Lua 判断系统深浅色自动切换主题------配置文件是完整的 Lua 脚本,这一点越用越香。换个主题前后对比:

mux 使用
先一句话讲清 mux 是什么:WezTerm 内置了一个自研多路复用器,终端里跑的进程归后台 mux server 管,不归窗口管,关窗等于 tmux 的 detach。这是它和普通终端模拟器拉开差距的地方;tmux 在 Windows 上只能跑在 WSL 里,而 mux 原生可用。
启用本地持久化只要两行配置:
lua
config.unix_domains = { { name = 'unix' } }
config.default_gui_startup_args = { 'connect', 'unix' }
重启 WezTerm 后做个实测:输入如下提示词,给 Claude 派一个 60 秒的倒计时任务;它弹出工具调用时先批准,再继续后面的步骤:
dart
请用 Bash 工具执行下面这条命令,等它完整跑完后再回复我"任务完成",不要提前回复:
powershell -NoLogo -Command '1..60 | ForEach-Object { Write-Host "tick $_"; Start-Sleep 1 }'

然后关闭WezTerm的窗口,这时候在外部 PowerShell 里跑 wezterm cli list,能看到 Claude 的 pane 还活着------进程没死,只是"没人看"了。

重新打开 WezTerm,会话原样恢复,任务已经自己跑完,Claude 回了"任务完成"。关窗那几十秒,它一秒都没停。

后台的 mux server 不会自己退,想停掉它可以用命令:taskkill /IM wezterm-mux-server.exe /F。
分屏并行
跑 Claude Code 的典型姿势是:一边让 Agent 干活,一边自己盯日志、跑测试。WezTerm 原生分屏,不用装 tmux,几个快捷键就能开出工作阵型:
| 操作 | 快捷键 |
|---|---|
| 左右分屏 | Ctrl+Shift+Alt+% |
| 上下分屏 | Ctrl+Shift+Alt+" |
| 在 pane 间跳转 | Ctrl+Shift+方向键 |
| 调整 pane 大小 | Ctrl+Shift+Alt+方向键 |
| 当前 pane 放大/还原 | Ctrl+Shift+Z |
实战布局:左 pane 跑 Claude Code,Ctrl+Shift+Alt+% 分出右 pane 盯 dev server 日志,这种左右两分是最高频的阵型(如图);需要同时跑测试时,回左 pane 再 Ctrl+Shift+Alt+" 在底部补一刀。Agent 输出长文时用 Ctrl+Shift+Z 把当前 pane 临时放大看完,再按一次还原;某个 pane 不用了,进去敲 exit 就关掉。

Windows Terminal 对比
先说公道话:Windows Terminal 是微软官方出品,系统集成好、开箱即用,日常够用,没什么毛病。但面向 AI Agent 这个场景,差异就出来了:
| 维度 | Windows Terminal | WezTerm |
|---|---|---|
| 平台 | Windows 独占 | Windows / macOS / Linux 全平台 |
| 配置方式 | settings.json + GUI | Lua 脚本,可编程、热重载 |
| 会话复用 | 仅 tab/pane,关窗即丢 | 内置 multiplexer,会话持久化 |
| 远程会话 | 依赖外挂 ssh | mux server 断线重连、恢复现场 |
| 终端图片 | 不支持 | iTerm2 / Kitty / Sixel |
| 字体渲染 | 系统原生渲染器 | FreeType 全平台一致,连字支持好 |
| 启动残影清理 | 无默认快捷键,需手动清 | Ctrl+Shift+K 一键清回滚缓冲区 |
一句话总结:Windows Terminal 胜在省心和系统集成;WezTerm 胜在复用、远程和可编程------而这三点,是跑 Claude Code/Codex 最需要的。
总结
WezTerm 把终端复用、会话持久化、可编程配置全部内置,正好补齐了 Claude Code/Codex 在 Windows 上的短板:换行顺手了、关窗会话不死了、分屏盯日志不用外挂 tmux 了。
当然也要说清楚取舍:它不像 Windows Terminal 那样开箱即用,得花点时间写 Lua 配置,中间还会踩几个小坑。但配置写一次能用好几年,换机器、换平台都能带着走,这笔账对重度用户来说是划算的。另外文中的配置和用法对 Codex CLI 等同类工具同样适用,换工具不用换终端。
在 Windows 上跑 AI 编程 Agent、觉得终端不顺手的朋友,不妨装上试试------用上一周,大概率就回不去了。
