#历史 #合并 #编辑 #文本编辑 #fcitx5 #libime

程序+库 libime-history-merge

合并多台机器上的 fcitx5 历史记录

3 个版本 (破坏性更新)

0.3.0 2023年1月13日
0.2.0 2022年2月15日
0.1.0 2022年2月5日

#1475 in 命令行工具

LGPL-2.1-or-later

70KB
2K SLoC

libime-history-merge

libime-history-merge 是一个简单的 CLI 工具,用于检查、合并和编辑来自多台机器的 libime 拼音历史记录。

用法

检查您的历史数据

您的 fcitx5 拼音输入法历史记录通常位于 ~/.local/share/fcitx5/pinyin/user.history。要检查它,将路径提供给 libime-history-merge

$ libime-history-merge ~/.local/share/fcitx5/pinyin/user.history

将为您调用分页器以检查您的输入历史记录的纯文本,传递 -n|--no-pager 标志或重定向输出将抑制分页器。

注意

您可以通过将其与 libime 提供的 libime_history 工具进行比较来检查转储的纯文本历史数据的完整性。

$ libime_history ~/.local/share/fcitx5/pinyin/user.history >/tmp/text1
$ libime-history-merge ~/.local/share/fcitx5/pinyin/user.history >/tmp/text2
$ diff /tmp/text1 /tmp/text2 && echo $?
  0

从纯文本编译

libime-history-merge 能够将纯文本文件编译成历史 blob。一个示例

$ # Dump the history content as plain text to ./history.txt
$ cp ~/.local/share/fcitx5/pinyin/user.history original.history
$ libime-history-merge original.history >history.txt
$
$ # Show the history content in plain text
$ cat history.txt
$
$ # Compile the plain-text history back to the binary form and save as ./history.bin
$ libime-history-merge history.txt -o compiled.history
$
$ # Check integrity
$ diff original.history compiled.history && echo $?
  0

编辑您的历史数据

libime-history-merge 还允许您编辑历史条目。要达到此目的,只需提供 -e|--edit 标志

$ libime-history-merge user.history --edit --output ./out.history

将打开一个编辑器(可能由 VISUALEDITOR 环境变量指定),其中包含纯文本格式的历史内容。然后可以删除/插入历史条目。在保存并退出编辑器后,libime-history-merge 将将纯文本历史记录编译回与 libime 兼容的格式,并将其保存到指定的输出路径(在这种情况下为 ./out.history)。

从多台机器合并历史数据

平衡合并

通过传递 -o|--output 选项指定保存路径

$ libime-history-merge \
    machine1.history machine2.history machine3.history \
    -o merged.history
$ libime-history-merge merged.history  # Inspect the merged history

libime-history-merge 将会均匀混合输入历史记录。

加权合并

也可以通过传递权重的方式实现加权合并,使用 -w|--weights 选项

$ libime-history-merge \
    A.history B.history C.history \
    -w 2,5,3 \
    -o merged.history
$ libime-history-merge merged.history  # Inspect the merged history

libime-history-merge 将按照指定的优先级混合输入历史记录,在这种情况下,合并历史记录的前10条条目将是

B[0]
C[0]
B[0]
C[0]
A[0]
B[1]
C[1]
B[1]
C[1]
A[1]

其中 X[k] 表示从 X.history 中获取的第k条条目。

注意

前一个示例中的平衡合并等价于为每个输入历史记录指定相同的权重,例如 -w 3,3,3

依赖项

~7-17MB
~226K SLoC