# textkit.editor 库模块帮助文档

<details>  <summary>操作选择</summary>  <p>
## 最小参数

| 需求 | operation | 必要字段 |
|---|---|---|
| 准确旧片段替换 | replace | oldText, newText |
| 锚点前 / 后插入 | insertBefore / insertAfter | anchor, newText |
| 替换完整行 | replaceLines | startLine, newText；endLine 可省略 |
| 保留两端锚点，替换中间 | replaceBetween | beginAnchor, endAnchor, newText |
| 保留两端锚点，删除中间 | deleteBetween | beginAnchor, endAnchor |

Minimal args：只传当前操作对应字段；不适用的定位、保护参数会报错。newText 不能省略；空字符串才表示删除。deleteBetween 不接收 newText。

Copy old / format new：oldText、anchor、expectedOldText 复制当前原文，不 trim/dedent，不重新排版。新片段可显式用 textkit.indent/dedent 调整。编辑器不推测缩进，不提供正则、模糊匹配或空白放宽。

## 多处与行尾

- Unique by default：只允许一处匹配。replaceAll=true 处理全部非重叠命中；expectedCount=N 是断言准确次数，不是“前N处”或“第N处”。零命中始终失败。
- replaceLines 修改包含两端的完整行；空字符串删除行，而非留下空行；原区间带行尾换行且新文本未提供时自动衔接，有换行则不重复加。
- expectedOldText 可包含或省略区间最后一个行尾换行；它是可选保护，不需要时省略。空字符串表示要求原行为空。
- between 默认保留锚点；newText 包含首尾锚点时设 includeAnchors=true。嵌套、缺少结束锚点均拒绝，不会应用前面已匹配的部分。

EOL-only tolerance：默认仅忽略 CRLF/LF/CR 差异，新内容采用局部行尾；SPACE/TAB、行尾空格、大小写仍严格。preserveEol=false 禁用换行等价；replaceLines 的整行行尾衔接规则仍有效。禁止为“修复匹配”规范整份原文。

预览预算与 textkit.patch 相同；失败先读 info.code / hint，再读取对应区域。诊断是建议检查的位置，不参与写入。此库只处理字符串，文件备份/编译/写入由文件工具负责。
</p></details>

[结构化编辑](https://www.aardio.com/zh-cn/docs/library/textkit/editor/) [textkit 主库](https://www.aardio.com/zh-cn/docs/library/textkit/)

## textkit.editor 成员列表 <a id="textkit.editor" href="#textkit.editor">&#x23;</a>

结构化编辑引擎，供文件编辑工具使用：literal-only / unique-by-default / atomic。  
Route: patch 标记冲突、整行编辑、锚点插入或明确批量替换→process。Copy old, format new；不自动缩进、不模糊回退；仅处理字符串。

### textkit.editor.process(text,args) <a id="textkit.editor.process" href="#textkit.editor.process">&#x23;</a>
→newText,null,info；失败→null,err,info，无部分结果。  
Minimal args: replace(oldText,newText)；insertBefore/After(anchor,newText)；replaceBetween(beginAnchor,endAnchor,newText)；deleteBetween(beginAnchor,endAnchor)；replaceLines(startLine,newText[,endLine,expectedOldText])。这些是operation值，不是子方法。  
默认唯一；replaceAll=true=全部非重叠命中；expectedCount=N=准确次数断言，不是上限/第N处；零命中失败。  
newText 显式传入，空串=删除（deleteBetween 不传）；插入不自动加换行；between 默认保留锚点、拒绝嵌套/缺尾，includeAnchors=true 才包含锚点。  
replaceLines：1-based闭区间整行；空串删除整行；有原行尾且新文本缺行尾时沿用。expectedOldText 可含/不含末行EOL。  
preserveEol 默认true：仅EOL等价，新文本适配局部EOL，未动部分字节保真；false=禁用等价，不取消整行衔接。  
previewMaxBytes 默认1024，0..4096；0关闭文本回显，不限制编辑。失败按info.code/hint重读原文，禁止trim/dedent旧片段后模糊重试。

### textkit.editor.version <a id="textkit.editor.version" href="#textkit.editor.version">&#x23;</a>
实现版本
