保存的文本转换
转换是一小组查找替换规则,你保存一次,然后有意地去应用它:整理粘贴进来的文本、给列表排序、去掉行尾空格、把一段文字包进代码块。你从格式 菜单中选一个,看看它会改动什么,然后再决定。
设置里把它们的性质写得很清楚:“存储的查找替换规则和一些内置的文本操作。它们不是脚本:Varlig 绝不会为它们运行 shell 命令、插件或网络请求,也绝不会自行应用——无论是导入、粘贴还是打开笔记时。你可以从“格式”▸“转换”中选取一个,并在应用之前查看它的更改。”
它们在哪里
列表在 设置 › 编辑器 › 文本转换 中,一开始是空的:在你添加第一个之前,格式 › Transformations 只显示 无转换,任何地方都不会有东西运行。
添加文本转换 会新建一个,名为 转换,其中有一条 查找与替换 规则。每个转换都有:
| 字段 | 作用 | 初始值 |
|---|---|---|
| 名称 | 格式菜单中显示的名称。 | Transformation |
| 应用于 | 所选内容 或 整篇笔记。 | 所选内容 |
| 在“格式”菜单中显示 | 格式 › 转换 是否列出它。 | 打开 |
| 规则 | 添加规则 添加一条;移除最后一条规则 去掉最后一条。 | 一条 查找与替换 |
列表中的每一行还有一个用于拷贝它的按钮和一个用于删除它的按钮。
没有完成的转换 —— 没有名称、没有规则,或者有一个无法编译的模式 —— 会在设置中被标出原因,并在你修好它之前,不出现在 格式 › Transformations 中。
已保存的文本转换通过 iCloud 在 Mac、iPhone 和 iPad 间同步。请在 Mac 上开启 通过 iCloud 同步笔记。各设备的偏好设置中保留本地副本,因此离线也能使用;它们不包含在笔记导出或资料库备份中。
规则
规则按顺序运行,每一条都作用在上一条的结果上。没有条件,也没有分支。
| 规则 | 作用 |
|---|---|
| 查找与替换 | 字面文本,带 区分大小写 和 全字匹配(两者一开始都关闭)。 |
| 正则表达式 | 一个 ICU 模式,替换内容中可以用 $1 和 ${name} 引用捕获组。 |
| 全部大写 | 把文本变为大写。 |
| 全部小写 | 把文本变为小写。 |
| 首字母大写 | 把每个单词的首字母大写。 |
| 行排序 | 给各行排序。 |
| 删除重复行 | 重复的行只保留第一处。 |
| 删除行尾空格 | 去掉每行末尾的空格。 |
| 合并行 | 用你给出的 分隔符 把各行连成一行。 |
| 拆分行 | 在 拆分位置 中的文本处拆分,每一段独占一行。 |
| 用代码围栏包裹 | 把文本放进一个围栏代码块,并使用你给出的 语言。 |
一条规则是一组值,绝不是代码。正则表达式由与 编辑 › 查找与替换(高级)… 相同的引擎编译和检查,无法编译的模式会在你应用之前就在 设置中被标出。
应用一个转换
在 Mac 上,通过 格式 › 转换 › name 运行转换;在 iPhone 和 iPad 上,使用编辑器的 转换 菜单。转换没有键盘快捷键,也不会在打开笔记、导入、粘贴或后台运行时自动执行。
应用于 设为 所选内容 时,请先选中文本。设为 整篇笔记 时,整篇笔记就是作用范围。
Varlig 会在一份副本上运行这些规则,并显示一个预览面板,列出 移除 4 行 和 插入 4 行。两边的列表都会收窄到真正有差异的部分,并且各自最多 40 行,行数更多时会附上说明。页脚写着“应用后可一步撤销。按下“应用”之前不会做任何更改。”取消 会让笔记保持原样;应用 会作出改动,并作为一次编辑,可由 编辑 › Undo(⌘Z)一步撤销。
如果笔记在预览生成之后有过改动,Apply 会拒绝执行,并要求重新运行一次,而不会覆盖更新的文本。
转换在什么时候不会运行
每一次失败都会让笔记保持原样 —— 你绝不会得到一个只改了一半的转换。每一种情况都会说明发生了什么,而不去改动任何内容:
- “文本转换不会作用于加密、只读或已移到废纸篓的笔记。”只读的资料库同理。
- “More than 10,000 matches in one rule. Narrow the transformation.”
- “转换耗时过长。请简化其规则或使用更小的范围。”
- “此转换在这里不会更改任何内容。”
- 模式无效、缺少捕获组或没有要查找的文本的规则,没有名称或没有规则的转换,以及在没有选中任何内容时运行的 所选内容 转换,都会在信息中被逐一点名。
限制
| 项目 | 限制 |
|---|---|
| 保存的转换 | 50 |
| 一个转换中的规则 | 20 |
| 一条规则中的匹配 | 10,000 |
| 整个转换的耗时 | 1.5 秒 |
无法跨多篇笔记试运行:要一次改动多篇笔记,请使用 编辑 › 在笔记中替换…,它会分别预览每篇笔记的改动。
转换产出的永远只是普通的 Markdown,所以它写出的任何内容对 Varlig 来说都没有特殊含义,别的编辑器看到的,正是 Varlig 保存下来的东西。