讲师中心 微信公众号
AI工具推荐 视频效率加速

Emacs Control

Polar Sponsor
爱发电 赞助
.NET 9.0

控制Emacs,搜索、编辑、导航和与用户配对编程

Emacs Control Skill. 使用 emacsctl 与运行中的 Emacs....

功能概述

Emacs Control Skill. 使用 emacsctl 与运行中的 Emacs....是一项面向实际任务的技能,主要用于CLI Usageemacsctl 需要配置代理和 Emacs 侧面.;Check https://github.com/calsys456/emacctl 以适当设置。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Emacs 控制技能

使用 emacsctl 与正在运行的 Emacs 进行交互。

CLI 使用方式

emacsctl [选项]... [参数]...

选项:
  -i, --insert                执行插入操作
  -r, --replace               执行替换操作
  -b, --buffer BUFFER         指定用于插入或替换的 buffer;默认为当前 buffer
  -s, --save                  在插入或替换后保存 buffer
  -p, --position INSERT_POSITION
  -l, --line INSERT_LINE
  -c, --column INSERT_COLUMN
      --start-position REPLACE_START_POSITION
      --end-position REPLACE_END_POSITION
      --start-line REPLACE_START_LINE
      --end-line REPLACE_END_LINE
  -h, --help

emacsctl 需要在 agent 端和 Emacs 端均完成配置。请参考 https://github.com/calsys456/emacsctl 完成正确设置;若检测到 emacsctl 未安装或连接失败,请及时向用户提示。

求值(Eval)

基本原理是:emacsctl 从第一个参数或 stdin 获取一段 S-expression 字符串,然后在 Emacs 中通过 progn 对其执行 read 和 eval,最后打印最后一个表达式的返回值。

emacsctl '(emacs-version)'
# 使用管道
echo '(emacs-version)' | emacsctl 
# => "GNU Emacs XX.X.XX"

# 使用 HEREDOC 输入多行内容或含引号的内容
# 注意:HEREDOC 末尾会自动添加换行符
emacsctl < return-to-me

请谨慎使用交互式或阻塞式函数(例如 read-string、y-or-n-p),否则会导致命令挂起。

若操作出错,建议用户手动执行撤销(undo)或回退(revert);仅当确认无重要修改或完全有把握时,才可自行调用 emacsctl '(undo)' 执行撤销。

执行 EVAL 时务必谨慎!

插入(Insert)

当指定 -i 时,emacsctl 将根据给定字符串、文件或 stdin 内容执行插入操作:

# 在 buffer emacsctl.el 的第 50 行第 15 列(位置 100)插入 "Hello"
emacsctl -i -b "emacsctl.el" -l 50 -c 15 -p 100 "Hello"

# 在当前 buffer 的位置 100 插入 your-code
emacsctl -i -p 100 <
EOF

# 将文件 ~/gpl-3.0.txt 的内容插入至当前 buffer 当前点位置,并保存 buffer
emacsctl -i -s ~/gpl-3.0.txt

替换(Replace)

当指定 -r 时,emacsctl 支持两种替换模式:按范围替换与按文本内容替换。

按范围替换

通过指定 --start-position 与 --end-position,或 --start-line 与 --end-line 来定义待替换区域:

# 将 buffer emacsctl.el 的前 5 个字符替换为 "XXXXX"
emacsctl -r -b "emacsctl.el" --start-position 1 --end-position 5 "XXXXX"

# 将当前 buffer 的第 50 至 100 行替换为 your-code,并保存 buffer
emacsctl -r --start-line 50 --end-line 100 -s <
EOF

按文本内容替换

提供两个字符串或两个文件,将第一个(旧文本)替换为第二个(新文本):

# 将 buffer emacsctl.el 中距离当前点最近的 "(require 'function)" 形式替换为 ~/function.el 的内容
emacsctl -r -b "emacsctl.el" "(require 'function)" ~/function.el

# 将当前 buffer 中的 `to-be-refined` 函数替换为 `refined` 函数
emacsctl -r <(cat <

若存在多个匹配的旧文本,仅替换距离当前点最近的一个。如需批量替换或基于正则表达式的替换,请直接编写 ELisp 代码实现。

接口(Interface)

以下是一组专为 agent 设计的 ELisp 函数,均以 emacsctl- 开头,返回结构清晰、信息丰富的 Lisp plist。如条件允许,可通过 Eval 调用。

光标点(Point)与标记(Mark)

使用 (emacsctl-point-info &optional (surrounding 2)) 和 (emacsctl-mark-info &optional (surrounding 2)) 获取光标点与标记位置的信息及其上下文内容。

当前光标点以字符 “█” 标记,当前标记以字符 “▄” 标记。

Buffer

使用 (emacsctl-buffer-info &optional (buffer (current-buffer))) 获取 buffer 的状态与元数据。

使用 (emacsctl-buffer-imenu &optional (buffer (current-buffer))) 获取 buffer 的概览信息(如函数/变量列表等)。

使用 (emacsctl-buffer-list &optional match) 模糊匹配普通 buffer;类似地,使用 (emacsctl-hidden-buffer-list &optional match) 匹配隐藏 buffer。

Grep Buffer

使用 (emacsctl-grep pattern &optional (buffer (current-buffer))) 在 buffer 中搜索指定模式,返回匹配结果及其上下文。

使用 Emacs 特有的正则表达式语法。若构造复杂正则式有困难,推荐使用 rx 或 regexp-* 系列函数辅助生成。

读取 Buffer

函数签名: (emacsctl-read-buffer &key (buffer (current-buffer)) line (start-line line) (end-line line) position (start-position (or position (point-min))) (end-position (or position (point-max))) (surrounding 2) full-p)

示例:

;; 读取一个区域
(emacsctl-read-buffer :start-position  :end-position )
;; 读取若干行
(emacsctl-read-buffer :start-line  :end-line )
;; 读取某一行及其周围 20 行
(emacsctl-read-buffer :line  :surrounding 20)
;; 获取 buffer 的完整内容(请谨慎使用)
(emacsctl-read-buffer :buffer  :full-p t)

Window

使用 (emacsctl-query-window) 查看当前 frame 的窗口布局;使用 (emacsctl-select-window ) 根据 query-window 返回的索引切换至对应窗口。

Kill Ring(剪贴板)

使用 (emacsctl-query-kill-ring) 快速查看 kill-ring 内容概览;如需深度检索,请自行编写 ELisp 代码实现。

环境查询

搜索符号:使用 (emacsctl-search-symbol ); 搜索命令:使用 (emacsctl-search-command ); 搜索函数:使用 (emacsctl-search-function ); 搜索变量:使用 (emacsctl-search-variable )。 上述函数均返回包含丰富信息的结果。

查询模式(pattern)将按连字符(-)分段,并进行子串匹配;越精确的查询,返回的信息越详细。

使用提示

Emacs 控制技能并非用于替代其他工具调用。Emacs 是为具身人类设计的,而非为你服务。请优先使用高效、面向文件的其他工具完成工作;仅在确有必要或用户明确要求时,才使用 emacsctl。

目录

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

0

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

0

2026.11.04

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn