Skip to content

WezTerm

1. WezTerm 是什么?

https://wezterm.org/

WezTerm 的定位是:一个跨平台、可高度配置、支持 GPU 渲染、标签页、分屏、SSH、多路复用的现代终端模拟器。

终端模拟器:WezTerm / Windows Terminal / Ubuntu Terminal
Shell:PowerShell / cmd / bash / zsh / fish
提示符:Starship
命令工具:git / python / node / docker

你可以把它理解为:用来打开命令行窗口的软件

它们的核心作用是:

显示命令行界面
接收键盘输入
渲染文字、颜色、图标
管理标签页、分屏、快捷键
启动不同 Shell

2. WezTerm 与 PowerShell、bash 的关系

最容易混淆的是这里。

PowerShell / bash 是 Shell

它们负责解释你输入的命令。

例如你输入:

shell
cd ~/code
ls
python main.py

真正理解并执行这些命令的是 Shell。

WezTerm 是终端窗口

WezTerm 负责显示这个交互过程。

比如:

shell
WezTerm
│── WSL Shell
   └── bash / zsh / fish 
└── PowerShell
└── CMD

所以它们不是替代关系,而是组合关系。

3. 为什么要用 WezTerm?

不同的系统自带终端一般不一样,使用方式、快捷键也不同。并且默认的终端自带功能

windows -> PowerShell、CMD、WSL Shell
linux -> bash、zsh、fish

而 WezTerm 打开,可以使快捷键、使用体验保持一致。相比 Windows Terminal、Ubuntu Terminal,WezTerm 的优势主要是:

  • 跨平台一致性好
  • 配置能力更强
  • 分屏、标签页体验好
  • 快捷键可高度自定义
  • 支持 Lua 配置
  • 支持 SSH 域、WSL 域
  • 字体、颜色、透明、背景控制更细

如果你只是偶尔敲命令,Windows Terminal 已经够用。

但如果你要做下面这些事情:

  • 多项目切换
  • 一边跑服务,一边看日志
  • 一边编辑文件,一边执行命令
  • 经常连接远程服务器
  • 想统一 Windows / Linux / macOS 终端体验

WezTerm 就很值得学。

4. 怎么安装 WezTerm?

可以在官方查阅:https://wezterm.org/installation.html

Windows 安装

可以用 winget:

shell
winget install wez.wezterm

也可以去官网下载安装包。

安装后,开始菜单里搜索 WezTerm 打开即可。

ubuntu 安装

shell
sudo apt install wezterm

5. WezTerm 配置文件在哪里?

Windows 上配置文件一般是:

shell
C:\Users\你的用户名\.wezterm.lua

也就是用户目录下面的:

shell
.wezterm.lua

如果没有,就自己创建一个。

在 PowerShell 中可以使用下面指令打开:

shell
notepad $HOME\.wezterm.lua

WezTerm 使用 Lua 作为配置语言。

6. 最小可用配置

你可以先用这个版本:

lua
local wezterm = require("wezterm")
local config = wezterm.config_builder()

config.font = wezterm.font("JetBrainsMono Nerd Font")
config.font_size = 12.5

config.color_scheme = "Catppuccin Mocha"
config.window_background_opacity = 0.95

config.default_prog = { "wsl.exe", "-d", "Ubuntu-22.04" }

return config

这个配置的含义是:

使用 JetBrainsMono Nerd Font 字体
字号 12.5
主题使用 Catppuccin Mocha
窗口透明度 0.95
默认打开 WSL Ubuntu-22.04

如果你想默认打开 PowerShell,可以这样:

lua
config.default_prog = { "powershell.exe" }

7. 配置快捷键

WezTerm 很适合分屏。

下面是一套比较常用的快捷键:

lua
local wezterm = require("wezterm")
local act = wezterm.action
local config = wezterm.config_builder()

config.font = wezterm.font("JetBrainsMono Nerd Font")
config.font_size = 12.5
config.color_scheme = "Catppuccin Mocha"
config.default_prog = { "wsl.exe", "-d", "Ubuntu-22.04" }

config.keys = {
  {
    key = "Enter",
    mods = "ALT",
    action = act.ToggleFullScreen,
  },
  {
    key = "t",
    mods = "CTRL|SHIFT",
    action = act.SpawnTab("CurrentPaneDomain"),
  },
  {
    key = "w",
    mods = "CTRL|SHIFT",
    action = act.CloseCurrentTab({ confirm = true }),
  },
  {
    key = "\\",
    mods = "CTRL|SHIFT",
    action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }),
  },
  {
    key = "-",
    mods = "CTRL|SHIFT",
    action = act.SplitVertical({ domain = "CurrentPaneDomain" }),
  },
  {
    key = "h",
    mods = "ALT",
    action = act.ActivatePaneDirection("Left"),
  },
  {
    key = "l",
    mods = "ALT",
    action = act.ActivatePaneDirection("Right"),
  },
  {
    key = "k",
    mods = "ALT",
    action = act.ActivatePaneDirection("Up"),
  },
  {
    key = "j",
    mods = "ALT",
    action = act.ActivatePaneDirection("Down"),
  },
}

return config

常用快捷键:

Ctrl + Shift + t      新建标签页
Ctrl + Shift + w      关闭标签页
Ctrl + Shift + \      左右分屏
Ctrl + Shift + -      上下分屏
Alt + h/j/k/l         切换分屏
Alt + Enter           全屏

8. WezTerm 学习、使用技巧

建议不要一上来学完整 Lua 配置。按照下面顺序学就好。

第一阶段:搞懂定位

先搞清楚:

WezTerm = 终端窗口
Shell = 命令解释器
Starship = 提示符
Nerd Font = 图标字体

这一层搞清楚,比背配置更重要。

第二阶段:只改 5 个配置

先只学这几个:

shell
config.font
config.font_size
config.color_scheme
config.default_prog
config.window_background_opacity

对应能力:

改字体
改字号
改主题
改默认启动 Shell
改透明度

够你正常使用了。

第三阶段:学标签页和分屏

重点掌握:

新建标签页
关闭标签页
左右分屏
上下分屏
分屏之间移动
调整分屏大小

这才是 WezTerm 的核心生产力。

典型使用场景:

左边:vim / nvim / 当前项目目录
右上:运行后端服务
右下:查看日志 / 执行测试
另一个标签页:前端 pnpm dev
再一个标签页:数据库 / docker compose

第四阶段:再学高级配置

高级配置包括:

状态栏
右侧状态
自动切换主题
按项目启动工作区
多路复用
SSH domain
鼠标行为
复制粘贴行为
按键表

这些可以以后慢慢学,不建议一开始就全部研究。

14. 一个适合你的完整入门配置

你可以直接放到:

shell
C:\Users\你的用户名\.wezterm.lua

内容如下:

lua
local wezterm = require("wezterm")
local act = wezterm.action
local config = wezterm.config_builder()

-- 字体与显示
config.font = wezterm.font("JetBrainsMono Nerd Font")
config.font_size = 12.5
config.color_scheme = "Catppuccin Mocha"
config.window_background_opacity = 0.95

-- 默认启动 WSL
config.default_prog = { "wsl.exe", "-d", "Ubuntu-22.04" }

-- 窗口
config.initial_cols = 120
config.initial_rows = 32
config.window_decorations = "RESIZE"
config.enable_tab_bar = true
config.hide_tab_bar_if_only_one_tab = false

-- 启动菜单
config.launch_menu = {
  {
    label = "WSL Ubuntu",
    args = { "wsl.exe", "-d", "Ubuntu" },
  },
  {
    label = "PowerShell",
    args = { "pwsh.exe" },
  },
  {
    label = "CMD",
    args = { "cmd.exe" },
  },
}

-- 快捷键
config.keys = {
  -- 全屏
  {
    key = "Enter",
    mods = "ALT",
    action = act.ToggleFullScreen,
  },

  -- 新建/关闭标签页
  {
    key = "t",
    mods = "CTRL|SHIFT",
    action = act.SpawnTab("CurrentPaneDomain"),
  },
  {
    key = "w",
    mods = "CTRL|SHIFT",
    action = act.CloseCurrentTab({ confirm = true }),
  },

  -- 分屏
  {
    key = "\\",
    mods = "CTRL|SHIFT",
    action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }),
  },
  {
    key = "-",
    mods = "CTRL|SHIFT",
    action = act.SplitVertical({ domain = "CurrentPaneDomain" }),
  },

  -- pane 切换:类似 vim
  {
    key = "h",
    mods = "ALT",
    action = act.ActivatePaneDirection("Left"),
  },
  {
    key = "l",
    mods = "ALT",
    action = act.ActivatePaneDirection("Right"),
  },
  {
    key = "k",
    mods = "ALT",
    action = act.ActivatePaneDirection("Up"),
  },
  {
    key = "j",
    mods = "ALT",
    action = act.ActivatePaneDirection("Down"),
  },

  -- 复制粘贴
  {
    key = "c",
    mods = "CTRL|SHIFT",
    action = act.CopyTo("Clipboard"),
  },
  {
    key = "v",
    mods = "CTRL|SHIFT",
    action = act.PasteFrom("Clipboard"),
  },
}

return config

15. 最容易踩的坑

坑一:字体没有安装

如果配置了:

shell
config.font = wezterm.font("JetBrainsMono Nerd Font")

但系统没有这个字体,可能显示异常。

解决方式:

shell
先安装 JetBrainsMono Nerd Font
然后重启 WezTerm

坑二:Alt+h/j/k/l 没反应

常见原因:

快捷键被系统或输入法占用
配置文件没保存
WezTerm 没重新加载配置
当前焦点不在 WezTerm

可以先用更不容易冲突的组合,比如:

mods = "CTRL|ALT"

16. 最实用的使用方式

日常开发可以这样用:

Tab 1:项目后端
  左侧:编辑/执行命令
  右侧:运行 FastAPI / Flask

Tab 2:项目前端
  左侧:pnpm dev
  右侧:git status / git commit

Tab 3:Docker
  docker compose up
  docker compose logs -f

Tab 4:服务器
  ssh root@server

WezTerm 的价值不只是好看,而是把开发环境组织得更清楚。

附录:字体配置

windows

首先进行下载字体:https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip

然后解压出来,目录结构如下

shell
JetBrainsMono-2.304
└── fonts
    ├── ttf
    ├── variable
    └── webfonts

进入到 ttf 目录下,全选,然后点击安装

ubuntu

shell
mkdir -p ~/.local/share/fonts
cd /tmp

wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip

unzip JetBrainsMono.zip -d JetBrainsMono
cp JetBrainsMono/*.ttf ~/.local/share/fonts/

fc-cache -fv

如果下载速度过慢,可以使用下面分享的文件。

通过网盘分享的文件:JetBrainsMono-2.304.zip 链接:https://pan.baidu.com/s/11cvfleCgroPPUMNZHjsKtg?pwd=6447 提取码:6447