Emacs中使用小鹤音形输入法的尝试(基于pyim)

发现论坛里面好像还没有相关的配置帖子,于是自己琢磨了一下。

先致谢!功能的实现得益于 tumashu 的pyim项目,一切都变得那么的简单。

看配置:

;; pyim - Chinese input methods
(use-package pyim
  :init
  (setq default-input-method "pyim")
  :config
  ; add flypy method
  ; 这段代码改写自 tumashu 的wubi包,再次致谢!
  (pyim-scheme-add
   '(flypy
     :document "小鹤音形输入法"
     :class xingma
     :first-chars "abcdefghijklmnopqrstuvwxyz"
     :rest-chars "abcdefghijklmnopqrstuvwxyz'"
     :code-prefix "flypy/" ;词库中所有的 code 都以 "flypy/" 开头,防止和其它词库冲突。
     :code-split-length 4 ;默认将用户输入切成 4 个字符长的 code 列表(不计算 code-prefix)
     :code-maximum-length 4 ;小鹤音形词库中,code 的最大长度(不计算 code-prefix)
     :prefer-triggers nil))
  (pyim-extra-dicts-add-dict
   '(:name "flypy" :file (concat user-emacs-directory "pyim-flypy.pyim")))
  ; 用分号做次选按键
  (define-key pyim-mode-map ";"
              (lambda ()
                (interactive)
                (pyim-select-word-by-number 2)))
  (pyim-default-scheme 'flypy))

看完了上面的配置,我们就差一个pyim-flypy.pyim词库文件了。

在小鹤音形的官方网盘里面有百度的个性化词库,虽然没有小鹤音形官方输入法那么功能丰富,但对于日常的输入已经足够用了。所以,我们就把这个文件转换成pyim的词库文件。

具体方法tumashu/pyim的文档已经说的非常清楚了,我就不赘述了。生成的文件大概是这样的格式(前缀flypy/是我手动添加的):

将该文件放到user-emacs-directory目录下(或者你喜欢的任何地方,但要修改下配置中的路径)。

然后就大功告成了!看下效果:

flypy

3 个赞

这个和 emacs-rime 相比怎么样?当时觉得麻烦就直接用 emacs-rime 了。

容小萌新再去研究下emacs-rime。 :joy:

用 emacs-rime 可以不用手动切换中英文,可以使用 inline 自动进行。pyim 不知道是否可以。

有类似的功能

我直接用的内置 quail flypy-emacs/flypy.el at master · dramforever/flypy-emacs · GitHub

1 个赞

我不知道如何转换flypy的词库,直接用emacs-rime挂在flypy,官方网盘有rime的配置,已经用了很久了

1 个赞

厉害了!我周末也看了下quail,发现确实不错。我看你第二候选用的方案是直接将分号写在了码表里,是否用个匿名函数更好一些。比如:

(lambda ()
   (interactive) 
   (quail-next-translation)
   (quail-select-current)))

/哭笑 我不知道是否有更好(或者现成)的函数可用。


我把上面的函数绑定到分号上后,发现原生的分号不能正常的输入了,只好取消了分号的正常输入,使用冒号的次选作为中文分号了。/哭笑

粗看了下,也是很容易的实现。

那个链接是我刚开始参考的,我现在是用这个函数

(defun my-quail-send-2 ()
  (interactive)
  (execute-kbd-macro (kbd "2") nil)
  )

直接在 quail-define-pacakge 把分号绑定成这个函数就好了。同理 ’ 就改成 3

1 个赞

感谢,果然是集思广益。