这两天几个同学都在折腾 rime, 我学习他们的经验,优化了一下 pyim
- 现在 pyim 不需要手动设置 rime 的 page-size 了
- pyim 自动上屏机制 pyim-autoselector 基本可用了,可以实现自动上屏和字母顶屏
- pyim 现在优先使用 liberime-search, 速度快,如果这个函数没有,使用 pyim-liberime-search, liberime-search 我已经提交 pr,正在等合并
这两天几个同学都在折腾 rime, 我学习他们的经验,优化了一下 pyim
windows上能用rime和liberime配合吗?另外还自己搞个sqlite放词库吗?
liberime 在 windows 理论上可以运行,但到目前为止,还没有人研究编译方法
sqlite放词库暂时还没有研究,首先需要考虑下面几个问题
我试了一下 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万条数据的搜狗细胞词库看看什么效果。
现在让我放弃用pyim的惟一一个问题是 没法在vterm里使用,不只pyim,emacs自带的输入法在 自带的term下也没法使用。 猜测是 vterm或term 默认都是read-only,导致无法insert到buffer中。
vterm里面其实可以激活输入法,只不过vterm里面不用self-insert-command,需要处理一下。
liberime 已经合并 liberime-search
这个已经好几年不更新了,废弃了吧?
sqlite的api很少的,不需要经常更新。
下午试了一下导入搜狗的细胞词库,327万数据。写lisp导入太费劲,不好debug,语言也不熟练。写python代码 2、3秒就导入了。这速度很给力。查询3ms左右。
还需要这个操作吗?
创建 ~/.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吧。。。
你用什么方案?五笔?
可以看下,上屏的时候输入字符还是有问题的。其他表现都很好的 ~
输入字符是什么意思,没太明白😊
比如在进行文本输入的时候,我输入了“,”逗号,这时候应该自动上屏第一个词和“,”逗号。