pyim 最近的一些更新, 遇到问题的同学请及时反馈

这两天几个同学都在折腾 rime, 我学习他们的经验,优化了一下 pyim

  1. 现在 pyim 不需要手动设置 rime 的 page-size 了
  2. pyim 自动上屏机制 pyim-autoselector 基本可用了,可以实现自动上屏和字母顶屏
  3. pyim 现在优先使用 liberime-search, 速度快,如果这个函数没有,使用 pyim-liberime-search, liberime-search 我已经提交 pr,正在等合并
2 个赞

windows上能用rime和liberime配合吗?另外还自己搞个sqlite放词库吗?

liberime 在 windows 理论上可以运行,但到目前为止,还没有人研究编译方法

sqlite放词库暂时还没有研究,首先需要考虑下面几个问题

  1. sqlite后端有没有高性能的 elisp 绑定,查询速度能不能满足输入法要求?
  2. sqlite后端有什么优势?
  3. 能不能找到想维护这个后端的人,因为我对 sql 不太懂

我试了一下 GitHub - syohex/emacs-sqlite3: sqlite3 binding of Emacs Lisp 是可以用的。编译成一个module,在emacs中直接调用。

把basedict的8万多条导入sqlite,数据库大概4.5MB大小。windows上直接读数据库文件,不加载到内存时,select一般在3ms左右。

linux上可以直接把数据库文件放到/dev/shm下,用ramdisk,数度可以更快。也省得再写段代码把sqlite数据库文件加载到内存,还要同步内存数据库和文件系统上的数据库。

我有空再试试导入100万条数据的搜狗细胞词库看看什么效果。

2 个赞

现在让我放弃用pyim的惟一一个问题是 没法在vterm里使用,不只pyim,emacs自带的输入法在 自带的term下也没法使用。 猜测是 vterm或term 默认都是read-only,导致无法insert到buffer中。

vterm

vterm里面其实可以激活输入法,只不过vterm里面不用self-insert-command,需要处理一下。

liberime 已经合并 liberime-search

这个已经好几年不更新了,废弃了吧?

sqlite的api很少的,不需要经常更新。

下午试了一下导入搜狗的细胞词库,327万数据。写lisp导入太费劲,不好debug,语言也不熟练。写python代码 2、3秒就导入了。这速度很给力。查询3ms左右。

2 个赞

还需要这个操作吗?


创建 ~/.emacs.d/pyim/rime/default.custom.yaml 文件,内容如下:

patch:
     "menu/page_size": 100
     "speller/auto_select": false
     "speller/auto_select_unique_candidate": false

已经不需要了

自动上屏也应该可以使用了,我添加了这么一个上屏规则

(defun pyim-autoselector-rime (&rest args)
  "适用于RIME的自动上屏器."
  (let* ((scheme-name (pyim-scheme-name))
         (class (pyim-scheme-get-option scheme-name :class)))
    (when (eq class 'rime)
      (let* ((commit (liberime-get-commit))
             (context (liberime-get-context))
             (composition (alist-get 'composition context))
             (length (alist-get 'length composition)))
        (cond
         ;; 有新输入的顶屏模式
         ((and commit (eq length 1))
          `(:select last :replace-with ,commit))
         ;; 无新输入的顶屏模式
         (commit
          `(:select current :replace-with ,commit))
         (t nil))))))

上屏的话auto_select和auto_select_unique_candidate应该需要的吧。。。

你的意思是把 auto_select 这两个选项在配置文件改为 true?

我已经重新编译了 liberime.so 并更新了 pyim 和 posframe, 自动上屏要怎么玩?

有没有 gif 演示一下?

对的,我现在用的emacs-rime搞的自动上屏!我现在试下pyim吧。。。

你用什么方案?五笔?

Kapture 2020-02-27 at 18.26.38

可以看下,上屏的时候输入字符还是有问题的。其他表现都很好的 ~

输入字符是什么意思,没太明白😊

比如在进行文本输入的时候,我输入了“,”逗号,这时候应该自动上屏第一个词和“,”逗号。