ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

4 个场景跑通 WezTerm 插件开发:从 2 行加载到 10 行写插件

4 个场景跑通 WezTerm 插件开发:从 2 行加载到 10 行写插件 4 个场景跑通 WezTerm 插件开发从 2 行加载到 10 行写插件【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/weztermWezTerm 是用 Rust 编写的 GPU 加速终端模拟器与多路复用器WezTerm 插件开发说白了就是把一段 Lua 文件塞进配置让 WezTerm 从 git 仓库自动拉取加载。痛点在于你想改快捷键、加状态栏却不确定改动到底生效没有。下面按 4 个具体需求走一遍从加载现成插件到自己写、交付给同事的流程每节都以验证方法收尾。加载现成的 WezTerm Lua 插件2 行配置生效配置里加两行就能用别人的插件local wezterm require wezterm local clip wezterm.plugin.require https://git.example.com/you/clip-copy local config wezterm.config_builder() clip.apply_to_config(config, { clipboard Clipboard }) return config加载后代码在哪第一次require时 WezTerm 会把仓库克隆到运行时目录的plugins/子目录检出默认分支目录名由 URL 编码而来想确认每个插件的实际路径在 DebugOverlay 的 Lua REPL 里跑wezterm.plugin.list()。传参方式apply_to_config第二个参数是任意 Lua table插件内部按需读取。支持哪些字段只有插件自己的 README 说得清用之前看一眼。同类需求一个套路如果插件做的是 WezTerm 状态栏自定义比如在update-status事件里调window:set_left_status加载方式完全一样差别只在apply_to_config内部改了什么。机制细节见 docs/config/plugins.md。从零写一个 WezTerm 快捷键插件入口文件只有 10 行目标把 CtrlShiftC 绑到复制并且复制目标终端缓冲区还是系统剪贴板可以在配置里切换。入口文件怎么写建个目录跑mkdir clip-copy cd clip-copy git init然后写plugin/init.lua——WezTerm 的加载器只认这一个约定该文件必须返回一张包含apply_to_config的表。local plugin {} -- WezTerm 启动时调用这个唯一入口config 是配置构建器 function plugin.apply_to_config(config, opts) opts opts or {} -- 复制目的地Wezterm 是终端缓冲区Clipboard 是系统剪贴板 local dest opts.clipboard or Wezterm table.insert(config.keys, { key C, mods CTRL|SHIFT, action wezterm.action.CopyTo(dest), }) end return plugin怎么验证快捷键生效在配置里用file://URL 引用本地目录local clip wezterm.plugin.require file:///home/you/projects/clip-copy clip.apply_to_config(config, { clipboard Clipboard })启动后选中一段文本按 CtrlShiftC再到别的窗口粘贴——能贴出来说明这条 WezTerm 快捷键配置已生效。不生效的话先确认wezterm.plugin.list()里有没有这条记录再对照 docs/config/keys.md 检查key/mods写法。多模块插件package.path 怎么修问题init.lua里require notify找不到同目录的notify.lua因为 Lua 搜索路径不包含插件的安装目录这是多模块插件最常见的挂法。修法从wezterm.plugin.list()里找出本插件的plugin_dir把它拼进package.path-- plugin/init.lua 顶部 local PLUGIN_URL file:///home/you/projects/clip-copy for _, entry in ipairs(wezterm.plugin.list()) do if entry.url PLUGIN_URL then package.path package.path .. ; .. entry.plugin_dir .. /plugin/?.lua break end end local notify require notify⚠️plugin_dir末尾的目录名是从 URL 编码出来的所以千万别硬编码绝对路径否则换台机器必挂。本地开发循环update_all 和 list 怎么用改完代码不自动生效本地仓库里的改动要先同步到运行时目录才有效。流程是在 DebugOverlay 的 Lua REPL 里执行wezterm.plugin.update_all()再重启 WezTerm 让配置重新加载然后重复验证那一步。查状态wezterm.plugin.list()对每个插件返回三个字段——component编码后的目录名、plugin_dir安装路径、url来源地址。调试路径问题全靠它。移除插件配置里删掉require那行再去运行时目录的plugins/下删掉对应文件夹路径用list()查留着的只是垃圾。把插件交给别人用交付前核对 3 点默认分支就是交付面加载器只克隆仓库的默认分支update_all也只拉默认分支所以别指望对方钉版本需要稳定版就提醒对方自行切分支。参数写进 READMEapply_to_config(config, opts)第二个表支持哪些字段对方没有任何旁路可以得知README 不说就是黑盒。入口契约别破坏仓库里必须有plugin/init.lua返回带apply_to_config的表且仓库地址用 HTTPS 或 file 协议可拉取——三者缺一对方那里第一行require就会报错。最快的起步方式找一个开源 WezTerm 插件把它 clone 下来通读plugin/init.lua照它的目录结构改出你的第一版比从空白文件开始省一半时间。【免费下载链接】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),仅供参考
返回列表