像Acme一样加载文本:ad编辑器plumbing rules入门教程
像Acme一样加载文本ad编辑器plumbing rules入门教程【免费下载链接】adan adaptable text editor项目地址: https://gitcode.com/gh_mirrors/ad5/ad如果你厌倦了打开编辑器 → 找文件 → 跳转行号这种繁琐的流程那么 ad 编辑器 一定会让你眼前一亮。作为一个可适应的文本编辑器an adaptable text editorad 把 Plan9 经典编辑器 Acme 的核心理念——文本不仅是内容更是可以交互的指令——带进了现代终端。而这一切的枢纽就是今天要介绍的plumbing rules 入门教程一套让 ad 编辑器帮你看懂文字、自动完成加载文本与执行命令的规则系统。简单说你只需把光标放在一个文件路径上按回车ad 就会自动帮你打开它。ad 编辑器是什么ad 是由 Rust 编写的终端文本编辑器它试图把 vim/kakoune 的模态编辑体验与 Plan9 Acme 的扩展哲学融合在一起。在 ad 中文字既可以编辑也可以被执行——这正是它与普通编辑器的最大区别。如上图所示ad 支持多缓冲区、语法高亮、状态栏等现代编辑器的基本能力但它真正的杀手锏藏在对文本的加载load与执行execute之中。什么是 plumbing rulesplumbing管道概念源自 Plan9 系统的 plumber 守护进程它接收一条包含文本内容的消息根据预定义的规则把这条消息发送到最合适的处理程序。ad 借鉴了这一设计在 src/plumb.rs 中实现了一套轻量的消息路由机制。每条 plumbing 消息都包含以下字段字段含义src消息来源例如ad或bashdst消息目标端口wdir工作目录当 data 是文件名时非常重要cur光标在 data 中的偏移位置attrs附加的键值对属性data消息的文本内容本体完整的消息格式可以参考测试样例 data/plumbing_tests/messages/valid/all-fields.txt。两种触发方式加载与执行在 ad 中你可以用两种方式激活一段文本加载文本把光标放在文本上按Enter或者用鼠标右键点击执行文本把光标放在文本上按或者用鼠标中键点击。加载时ad 会把当前选中的文本打包成一条 plumbing 消息交给规则系统处理执行时则直接把文本当作 shell 命令运行输出会进入一个$dir/output缓冲区。这两条路径的入口都在 src/editor/actions.rs。默认规则开箱即用的惊喜ad 内置了一套相当实用的默认规则存放在 data/plumbing.rules规则按先匹配先生效的顺序执行。来看看它默认能做什么你加载的文本ad 会自动做什么一串 Git commit hash如a1b2c3d...用git show显示提交内容一个 URL如https://example.com用浏览器打开一个图片文件路径用图片查看器打开一个 PDF 文件路径用 PDF 阅读器打开文件路径:行号:列号打开文件并定位到指定位置命令名(1)man 条目显示对应的 man page其中最实用的一条是文件:行号:列号规则当你在终端复制出编译器报错信息如src/main.rs:42:17并加载它时ad 会直接打开该文件并把光标跳到第 42 行第 17 列——报错定位从此告别手动数行号。规则的语法模式 动作一条 plumbing 规则由模式patterns和动作actions两部分组成所有模式都匹配成功后才依次执行动作。用到的文件可以看 data/plumbing.rules规则解析逻辑在 src/plumb.rs。常用的模式关键字关键字作用data matches 正则数据内容匹配正则捕获组存入$1、$2…arg isfile $0参数是一个存在的文件arg isdir $0参数是一个存在的目录attr add 键值给消息添加属性src is ad消息来源是指定程序data from 命令用命令的输出替换消息数据常用的动作关键字关键字作用plumb to edit把消息交给 ad 处理打开文件plumb start 命令在外部启动一个程序变量方面$0是正则完整匹配$1~$9是捕获组$data、$wdir、$src、$file则对应消息字段。注意 ad 的data matches用的是自带的正则引擎语法与常规正则略有差异。动手编写你的第一条自定义规则假设你希望加载形如todo:123的文本时自动跳转到todo.md的第 123 行可以这样写# todo:123 - 打开 todo.md 并跳转到 123 行 data matches todo:([0-9]) attr add addr$1 data set todo.md plumb to edit把规则追加到~/.ad/plumbing.rulesad 默认读取该文件并重启即可生效。这里的addr属性就是让 ad 定位行号的钥匙相关处理逻辑在 src/editor/actions.rs。再比如模仿默认规则给图片添加你自己的查看器data matches ([a-zA-Z0-9_\-./])\.(png|jpg) arg isfile $0 plumb start feh $0规则里的变量与格式要求可以参考完整样例 data/plumbing_tests/rules/valid/everything.txt。如何验证你的规则ad 仓库里自带了一套非常完整的规则测试集位于 data/plumbing_tests/rules/valid与rules/invalid规则解析的正确/错误用例messages/valid与messages/invalid消息解析的正确/错误用例match-tests规则匹配过程的行为描述。另外tests/data/editor-scenarios/plumbing/ 下的场景测试展示了加载文件后回车在同一窗口打开、Alt回车在新窗口打开等真实交互行为。写规则时不妨对照这些用例来调试自己的正则与逻辑。进阶理解消息的流转当你按下回车加载文本时ad 内部发生的是这样一个流程见 src/editor/actions.rs构造一条 plumbing 消息src为adwdir为当前缓冲区所在目录依次用每条规则尝试匹配消息匹配成功且动作为plumb to edit时根据attrs中的action、addr、filename决定是打开文件、跳转地址还是新建缓冲区显示数据动作为plumb start时在 shell 中异步启动外部程序全部规则都不匹配时退回到默认行为尝试把文本当路径打开。想深入了解协议的原始设计可以翻阅 docs/9p.md 以及 ad 提供的 9p 文件系统接口实现。小结Plumbing rules 把编辑器从被动的内容容器变成了主动的文本路由中心。掌握了这套规则你就能像 Acme 用户一样让 ad 编辑器 自动识别 URL、文件路径、报错定位甚至 Git 提交真正实现所见即可加载加载即所达。这或许就是可适应文本编辑器最迷人的地方规则在手万物可通。小提示ad 目前仍处于快速迭代阶段默认按键和规则可能随版本调整。动手实验前记得先用内置的:help查看当前版本的说明并查阅 CHANGELOG.md 了解变更。【免费下载链接】adan adaptable text editor项目地址: https://gitcode.com/gh_mirrors/ad5/ad创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

从零构建操作复盘系统:技术人的经验沉淀与效率提升指南

从零构建操作复盘系统:技术人的经验沉淀与效率提升指南

这类标题和数字组合,通常指向的是个人交易记录或市场复盘,核心是“盘前”和“落袋”这两个动作。对于技术博客的读者来说,直接看数字没有意义,大家真正关心的是: 如何系统性地记录、复盘自己的交易或项目操作&#xf…

2026/8/21 13:03:11 阅读更多 →
Jot是什么:.NET应用状态持久化库完全指南,告别繁琐的设置文件

Jot是什么:.NET应用状态持久化库完全指南,告别繁琐的设置文件

Jot是什么:.NET应用状态持久化库完全指南,告别繁琐的设置文件 【免费下载链接】Jot Jot is a library for persisting and applying .NET application state. 项目地址: https://gitcode.com/gh_mirrors/jot1/Jot Jot 是一个轻量级的 .NET 应用状…

2026/8/21 13:03:11 阅读更多 →
VnCoreNLP安装完全指南:Java环境配置与模型文件部署避坑手册

VnCoreNLP安装完全指南:Java环境配置与模型文件部署避坑手册

VnCoreNLP安装完全指南:Java环境配置与模型文件部署避坑手册 【免费下载链接】VnCoreNLP A Vietnamese natural language processing toolkit (NAACL 2018) 项目地址: https://gitcode.com/gh_mirrors/vn/VnCoreNLP VnCoreNLP 是一个专业级的越南语自然语言处…

2026/8/21 13:03:11 阅读更多 →

最新新闻

Beat Link Trigger 开发者指南:Clojure 项目架构、Leiningen 构建流程与社区贡献入门

Beat Link Trigger 开发者指南:Clojure 项目架构、Leiningen 构建流程与社区贡献入门

Beat Link Trigger 开发者指南:Clojure 项目架构、Leiningen 构建流程与社区贡献入门 【免费下载链接】beat-link-trigger Trigger events and automate shows in response to events on Pioneer CDJs 项目地址: https://gitcode.com/gh_mirrors/be/beat-link-tri…

2026/8/22 15:39:23 阅读更多 →
告别证书噩梦:用 r0capture 一条命令搞定安卓抓包

告别证书噩梦:用 r0capture 一条命令搞定安卓抓包

告别证书噩梦:用 r0capture 一条命令搞定安卓抓包 【免费下载链接】r0capture 安卓应用层抓包通杀脚本 项目地址: https://gitcode.com/gh_mirrors/r0/r0capture 代理配得再对,抓出来的也只是一片 TLS 握手加乱码——你肯定经历过抓包抓了个寂寞的…

2026/8/22 15:39:23 阅读更多 →
3 步装好茉莉花:Zotero 中文文献元数据抓取插件的保姆级上手

3 步装好茉莉花:Zotero 中文文献元数据抓取插件的保姆级上手

3 步装好茉莉花:Zotero 中文文献元数据抓取插件的保姆级上手 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 手动补录…

2026/8/22 15:39:23 阅读更多 →
【LangChain】示例选择器(Example Selectors)实战指南

【LangChain】示例选择器(Example Selectors)实战指南

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C知识分享》 《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录前言一. 什么是示例选择器?…

2026/8/22 15:39:23 阅读更多 →
CityPicker 城市选择器完全指南:Android 省市区三级联动 10 分钟集成教程

CityPicker 城市选择器完全指南:Android 省市区三级联动 10 分钟集成教程

CityPicker 城市选择器完全指南:Android 省市区三级联动 10 分钟集成教程 【免费下载链接】citypicker citypicker城市选择器,详细的省市区地址信息,支持仿iOS滚轮实现,仿京东样式,一级或者三级列表展示方式。 项目地…

2026/8/22 15:39:23 阅读更多 →
Vue 文档编辑器快速上手:5 分钟搭好纸面式在线文档编辑页

Vue 文档编辑器快速上手:5 分钟搭好纸面式在线文档编辑页

Vue 文档编辑器快速上手:5 分钟搭好纸面式在线文档编辑页 【免费下载链接】vue-document-editor :page_facing_up: Paper-sized WYSIWYG document editor for Vue apps 项目地址: https://gitcode.com/gh_mirrors/vu/vue-document-editor vue-document-edito…

2026/8/22 15:38:23 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →