WezTerm 多路复用完整指南本地会话持久化与 SSH 远程接入实战【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/wezterm如果你曾在远程机器上跑了很久的编译任务却在一次误关窗口后发现一切归零那 WezTerm 的多路复用multiplexing功能值得认真了解一下。这款用 Rust 编写的 GPU 加速终端模拟器内置了类似 tmux 的会话管理能力会话由一个后台服务持有而不是绑定在某个窗口上。也就是说关闭窗口后里面的标签页和进程仍然存活下次重新连接即可取回。先搞懂核心抽象域DomainWezTerm 把所有一组窗口 标签页 窗格的集合称为一个域Domain。启动 GUI 时会自动创建一个本地域来管理界面上的窗口通过额外配置你还可以让同一个 WezTerm 客户端接入其他类型的域域类型传输通道典型用途本地域local进程内管理 GUI 自身的窗口与标签页Unix 域Unix 套接字本机后台持久会话、Windows ↔ WSL 互通SSH 域SSH 隧道远程主机上的持久会话TLS 域TLS 加密 TCP跨网络、可断线自动恢复的远程会话这种设计的实际效果是一次认证后后续在新标签页里再开 pane/tab 都不需要重复登录本地域与远程域使用同一套快捷键和界面模型。各类型的详细说明见官方文档 docs/multiplexing.md。五分钟配好本地持久会话打开或新建~/.config/wezterm/wezterm.lua加入如下两行配置这是启用 Unix 域的最小可用写法config.unix_domains { { name unix }, } -- 让 WezTerm 启动时等价于执行 wezterm connect unix config.default_gui_startup_args { connect, unix }保存后启动 WezTerm若后台服务未运行它会自动拉起wezterm-mux-server再把 GUI 接上去。之后关掉所有窗口会话依然在后台存活随时可以用下面任一方式回到现场wezterm connect unix # 新开客户端接入 wezterm cli spawn --domain-name unix # 在已打开的 WezTerm 里加一个标签页接入如果不想打开即连接删掉default_gui_startup_args那行改为手动执行wezterm connect unix即可。两个按需开启的选项config.unix_domains { { name unix, local_echo_threshold_ms 10, -- 往返延迟超过 10ms 时启用本地预测回显 skip_permissions_check true, -- 仅在 WSL/NTFS 等特殊场景下开启 }, }local_echo_threshold_ms客户端测量到服务器往返延迟超过阈值时会先按本地预测把按键结果回显出来、不再干等让高延迟链路的手感更接近本地。skip_permissions_check默认会校验套接字文件的属主安全性。多用户机器上不要关闭它只有当套接字放在 WSL 的 NTFS 挂载卷上、权限信息永远不对时才需要放开。完整的字段说明可参考 unix_domains 配置项。SSH 域把远程主机变成常驻工位前提远程机器上也要安装兼容版本的 wezterm源码构建见 docs/install/source.md。在配置文件中声明一个 SSH 域config.ssh_domains { { name prod, remote_address 192.168.1.100, username devops, -- 可选覆盖 ssh 连接参数例如指定私钥 -- ssh_option { identityfile /home/dev/.ssh/id_ed25519 }, }, }然后执行wezterm connect prod。首次连接可能弹出认证交互强烈建议使用 SSH 密钥连上后 WezTerm 会在远端拉起多路复用守护进程并通过 Unix 套接字与之通信。此后该主机上的会话与本地域体验一致断网重连后可找回标签页新建 pane 也复用同一认证。直接复用~/.ssh/config更省事的做法是不写任何配置WezTerm 会自动读取~/.ssh/config中的主机条目为每台主机生成两类域——SSH:主机名普通 SSH 连接行为类似wezterm ssh断线即丢SSHMUX:主机名多路复用连接需要远端装有 weztermwezterm connect SSHMUX:staging wezterm cli spawn --domain-name SSHMUX:staging # 加入现有窗口的一个标签页这套自动发现机制可以通过wezterm.default_ssh_domains()定制用法见 default_ssh_domains 文档。WSL 场景Windows 终端里常驻一个 LinuxWindows 用户可以把 Linux 会话钉在 WezTerm 里。注意该方式目前仅支持 WSL 1WSL 2 的 AF_UNIX 互通尚未打通。WSL 内部的~/.wezterm.luaconfig.unix_domains { { name wsl, -- 把套接字放到 Windows 侧也能访问的路径 socket_path /mnt/c/Users/YourName/.local/share/wezterm/sock, skip_permissions_check true, -- NTFS 卷上的权限信息不可靠 }, }Windows 侧的~/.wezterm.luaconfig.unix_domains { { name wsl, serve_command { wsl, wezterm-mux-server, --daemonize } }, } config.default_gui_startup_args { connect, wsl }配置完成后从开始菜单启动 WezTerm 就直接落在 WSL 标签页上新开标签页默认也创建在 WSL 环境里。也可以跳过自动连接手动执行wezterm connect wsl。日常操作命令面板比背快捷键更快不确定某个操作的名字按CtrlShiftSpace打开命令面板输入关键词即可执行域相关的动作连接/断开某个域、在指定域中开新 pane 等也能从这里直接触发。其余高频快捷键均为默认绑定可重映射快捷键作用CtrlShiftT新建标签页CtrlShiftN新建窗口CtrlShiftW关闭当前标签页/窗口Alt方向键在窗格之间移动焦点CtrlShift方向键水平/垂直分裂当前窗格也可以用命令行直接操作窗格例如wezterm cli split-pane分裂、wezterm cli activate-pane切换焦点适合写进 shell 别名连接失败排查清单两端版本核对SSH/TLS 域要求远端装有兼容版本先在两边分别执行wezterm --version比对。套接字状态本机 Unix 域默认落在/run/user/uid/wezterm/或~/.local/share/wezterm/sock一类路径用ls -la确认文件存在且属主是你自己权限报错时先想是不是多用户机器上用了共享路径。看详细日志wezterm --log-leveldebug connect unix能看到连接握手每一步的报错绝大多数问题服务没起来、路径不通、版本不匹配都会在这里现形。确认服务在跑ps aux | grep wezterm-mux-server若进程不存在且你配置了自动拉起却仍连不上多半是拉起命令本身失败用serve_command手动执行一次看输出。进阶方向跨网络长连接TLS 域通过 SSH 引导获取证书后走 TLS TCP 通道连接中断后可凭已有证书自动重连并恢复会话配置项为config.tls_clients/config.tls_servers详见 multiplexing 文档的 TLS 章节。按键绑定到指定域wezterm.action.AttachDomain 域名可把接入某个域绑到快捷键上见 AttachDomain 文档。服务端行为定制多路复用服务端的实现位于 wezterm-mux-server/ 与 wezterm-mux-server-impl/ 两个 crate想理解会话如何在客户端之间共享可以从这里读起。会话持久、一次认证、本地远程同一套操作模型——把这套域模型用起来之后先连上服务器再干活会退化成开机后的一次点击。【免费下载链接】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),仅供参考