Skip to content

文件管理

在元书中,文件有三个存放路径,分别是“应用文件”、“键盘文件”与“iCloud 文件”。

  • 应用文件:在元书应用内部沙盒目录下,可使用第三方应用查看、编辑等操作,如「文件管理」、「Textastic」等文件管理应用。
    • 此目录下文件是我们日常修改使用的目录
  • 键盘文件:供键盘使用的路径,在系统的 AppGroup 路径下,其他应用无法访问,只能通过元书内置的文件管理功能查看、编辑等操作。
    • 因系统限制,在不开启键盘的「完全访问」权限时,键盘无法写文件到此目录下
    • 如您需要保留自造词,调频等数据,必须开启「完全访问」权限
  • iCloud 文件:主要用来实现做备份,自造词功能等功能。在 iCloud 的元书目录下。

为什么要分应用文件,键盘文件呢?主要是为了满足不同的使用场景:

  1. 可以使用第三方文件编辑器修改文件;
  2. 可以使用外部工具更新方案文件;

如果只使用键盘文件路径,用户将无法在应用外部完成对文件的管理与编辑。

因文件可能存放在三个不同的路径下,元书为了保持三个路径下文件的一致性,设计了下面的工作机制:

在 rime 每次运行「重新部署」和「同步」时,

  1. 检查元书 iCloud 文件/RimeUserData 目录下文件变更状态,如果存在变更,则从 iCloud 云端同步这些变化的文件:
  2. 复制 iCloud 中元书方案文件:在等待 1 完成后,元书会复制 iCloud 文件/RimeUserData 目录下文件至 应用文件/RimeUserData 目录下;
  3. 复制键盘文件:在完成 2 后,元书会复制 键盘文件/RimeUserData 目录下文件至 应用文件/RimeUserData 目录下;
  4. 执行「重新部署」或「同步」操作。
  5. 在「重新部署」或「同步」完成后,复制 应用文件/RimeUserData 目录下文件至 键盘文件/RimeUserData 目录下;

工作机制中我们可以看到,元书会在每次「重新部署」和「同步」时,复制 iCloud 中的元书方案(iCloud 文件/RimeUserData )文件至「应用文件」目录下(应用文件/RimeUserData)。

这个过程是强制的,没有开关可以关闭。那么如何控制哪些文件会被复制呢?

应用文件/RimeSharedSupport目录下,有一个名为 exclude_iCloud_rime_files.txt 的文件。

此文件用来设置排除从 iCloud 中复制的文件的正则表达式。类似黑名单的功能,即名单上的不复制。

默认文件内容如下:

# #符号为注释
# 其余内容一行为一个正则表达式
.*[.]userdb.*$
.*[/]installation[.]yaml$
  • .*[.]userdb.*$:表示不复制任何路径中包含 .userdb 内容的文件,即排除 userdb 文件的复制;
  • .*[/]installation[.]yaml$:表示不复制路径中以 installation.yaml 结尾的文件。

用户可以根据需要自行修改此文件内容,添加或删除正则表达式来控制 iCloud 文件的复制行为。

工作机制中我们可以看到,元书会在每次「重新部署」和「同步」时,复制「键盘文件」目录下(键盘文件/RimeUserData)文件至「应用文件」目录下(应用文件/RimeUserData)。

这个过程默认是开启的,由 「rime」-> 「禁止复制键盘文件」开关控制。

如果您不用自造词,或者键盘不会生成您需要保存的任何文件,可以开启此开关,禁止复制键盘文件的行为。

如果你想保留复制键盘文件的行为,且控制键盘上哪些文件会被复制。可以通过 include_keyboard_rime_files.txt 文件来实现。

应用文件/RimeSharedSupport目录下,有一个名为 include_keyboard_rime_files.txt 的文件。

此文件用来设置从键盘文件复制的文件的正则表达式。类似白名单的功能,即名单上的才会被复制。

默认文件内容如下:

# #符号为注释
# 其余内容一行为一个正则表达式
.*[.]userdb.*$
# 如果您使用 txt 类型自造词,可以取消此屏蔽
#.*[.]txt$
  • .*[.]userdb.*$:表示复制任何路径中包含 .userdb 内容的文件,即复制自造词 .userdb 目录下的全部文件;
  • .*[.]txt$:表示复制路径中以 .txt 结尾的文件,即键盘文件下所有 txt 的文件。
    • 此行默认被注释掉,如果您使用 txt 类型自造词,可以取消此行注释。

键盘无法保存自造词,通常是因为没有开启键盘的「完全访问」权限。

如果在开启了键盘「完全访问」权限后,仍然无法保存自造词,需要检查方案是否开启了自造词功能。

请先确保键盘可以保存自造词(见问题:键盘无法保存自造词),在确认正常的情况下,如果发现自造词无法同步的问题,请检查以下几点:

  1. 请确认「rime」-> 「禁止复制键盘文件」开关是否关闭,如果开启了此开关,键盘文件将不会被复制至「应用文件」目录下,自然无法同步;
  2. 请确认 include_keyboard_rime_files.txt 文件中,是否包含了自造词文件的正则表达式, 正常情况下,默认文件内容已经包含了自造词文件的正则表达式 .*[.]userdb.*$,如果您使用 txt 类型自造词,请取消注释 .*[.]txt$ 这一行;

如何将键盘文件复制到应用目录

Section titled “如何将键盘文件复制到应用目录”

默认情况下,元书会在每次「重新部署」和「同步」时,将符合 include_keyboard_rime_files.txt 条件的键盘文件复制到应用目录下。

所以你需要在 include_keyboard_rime_files.txt 文件中,添加相应的正则表达式,来控制需要复制的键盘文件。