1 个 Leader 键管住整个终端:WezTerm 配置实战
【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/wezterm
同时挂着一次编译、一份滚动日志、一个 SSH 会话,窗口之间来回切很快就把耐心耗光了。WezTerm 把这三件事放进同一个窗口:它是 GPU 加速终端,也是一个多路复用器,全部行为靠一份 WezTerm 配置(Lua 文件)驱动。下面这份实战就围绕"把常用操作收进键盘"这条主线展开。
为什么是 WezTerm 🖥️
先说清它凭什么值得你花时间。
渲染走显卡。文本、字形、背景都交给 GPU,滚动上万行日志、拖动窗格边界都不会明显掉帧,这是它和普通终端最直观的区别。
多路复用器是本体,不是插件。一个窗口里开多个窗格和标签,SSH 断开后里面的程序还在跑,重连能接着看。
一份 Lua 文件管全部。外观、快捷键、跨平台差异都写在同一个文件里,改完热重载即可生效,不用去翻 XML 或 INI。
最短路径:先让它跑起来 🚀
别一上来就抄别人的长配置。先把最小可用版本跑通,确认能正常开窗口,再逐项加东西。
这段配置只解决一个问题:让终端以合理的大小和一个好看的配色启动。
local wezterm = require 'wezterm' local config = wezterm.config_builder() config.initial_cols = 120 config.initial_rows = 30 config.font_size = 13 config.color_scheme = 'Dracula' return config把它存成~/.wezterm.lua,重新开一个 WezTerm 窗口就生效了。跑通之后,再往下加。
按手感调终端:字体、主题与透明度 🎨
字体和透明度决定你盯它八小时舒不舒服。
下面这段配置解决"字看得清、配色顺眼、背景有一点透"三件事。
config.font = wezterm.font_with_fallback({ 'JetBrains Mono', 'Fira Code', 'Noto Color Emoji', }) config.font_size = 13 config.line_height = 1.15 config.color_scheme = 'Catppuccin Mocha' config.window_background_opacity = 0.95 config.text_background_opacity = 0.9font_with_fallback是关键:主字体缺的字符会自动落到下一个字体,emoji 和图标就不容易出方块。透明度调到 0.95 左右,桌面隐约透出来又不刺眼。字体字段可参考仓库里的 fonts 说明。
把键盘交给 Leader 键 ⌨️
这是全文的重头。默认快捷键里窗格切换要靠Ctrl+Shift+方向键,手要离开键盘中心。Leader 键的思路借鉴自 Vim 和 tmux:先按一个"前缀",再按一个单键,就能触发对应动作。
机制是这样的。你定义一个组合键(比如Ctrl+A)作为前缀,按下它之后 WezTerm 进入一个临时的 LEADER 状态,这段时间里只有带LEADER的绑定会被识别,其他按键会被吞掉、不会传给终端。这个状态要么在你按下某个键后结束,要么到timeout_milliseconds超时自动取消。所以它不会误吞你正常输入。
下面这段配置解决"用方向感操作窗格"的问题:
config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 } config.keys = { { key = '|', mods = 'LEADER|SHIFT', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } }, { key = '-', mods = 'LEADER', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } }, { key = 'h', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Left' }, { key = 'j', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Down' }, { key = 'k', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Up' }, { key = 'l', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Right' }, }用h/j/k/l在四个方向间移动光标,跟 Vim 一致;|左右分屏、-上下分屏。动作和键位含义详见 键位文档。
| 前缀后按键 | 作用 |
|---|---|
Ctrl+A后\| | 把当前窗格左右切开 |
Ctrl+A后- | 把当前窗格上下切开 |
Ctrl+A后h / j / k / l | 向左 / 下 / 上 / 右切换窗格 |
习惯之后,手基本不用离开主键盘区就能切来切去。
一份配置,三个平台 🌐
同一份wezterm.lua在 Windows、macOS、Linux 上都能用,只是某些行为需要按平台微调。
下面这段解决"不同系统用不同的默认程序和外显"的问题,放在同一个配置文件里即可。
local wezterm = require 'wezterm' if wezterm.target_triple:find('windows') then config.default_prog = { 'pwsh' } elseif wezterm.target_triple:find('apple') then config.window_background_opacity = 0.92 else config.enable_wayland = true end不卡、不闪、不闹心 🛠️
遇到怪问题,多数是这几类:
- 字发虚发糊→ 多半是没指定等宽主字体 → 固定
font并配上回退链。 - 拖动窗格掉帧→ 可能走了 CPU 渲染 → 确认前端用 GPU(WebGpu 或 OpenGL),加速是默认开启的。
- 快捷键和输入法冲突→ 组合键撞了系统或 IME → 把 leader 前缀换成
CapsLock(即VoidSymbol),避开常用组合。
改完配置按Ctrl+Shift+R热重载,不用重启窗口就能看效果。
下一步清单 ✅
- 把编译、日志、SSH 拆成三个窗格,用
h/j/k/l切换。 - 选一套顺眼的 WezTerm 主题,写进
color_scheme。 - 把分屏、切标签、跳窗格都绑到 Leader 键上,收进主键盘区。
- 把
~/.wezterm.lua放进 git,让配置有版本、可回滚。
【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/wezterm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考