在 Emacs 中使用外部输入法,最大的问题是在切换 evil 的模式的时候,对输入来说会有延迟,因为需要手工将输入法切换到对应的英文模式,才能正常使用快捷键。
但是如果使用的是 Emacs 自己的输入功能,则不需要做这些同步,只需要从 insert 模式中退出即可,这种操作对 Emacs 来说真的是太方便了。
经过几次尝试之后,一点点测试出了配置过程中出现的问题,现在整理如下。
编译 librime
因为本人使用的是 Mac 系统,所以需要先安装一些工具。
brew install cmake git boost
这三个工具是编译 liberime 用的,本来想从 GitHub 上下载,但是有问题,所以决定自己编译一份,这里测试了一下,只使用 CommandLineTools 是不行的,需要安全安装 xcode 才可以。
- 下载 librime 版本库
git clone --recursive https://github.com/rime/librime.git
- 编译第三方库
cd librime
make xcode/thirdparty
- 编译 librime
make xcode
编译 liberime
编译这个是依赖于 librime 文件的,需要先将依赖引进来。
- 下载 liberime 项目
git clone git@github.com:merrickluo/liberime.git
- 引入 librime 依赖
export RIME_PATH=~/DEV/librime
- 编译 liberime 文件
make liberime
- 然后将 liberime 加入到 .emacs.d 项目中
如果不想自己编译的话,也可以直接下载我编译好的文件,但是需要把文件存放到一个指定的路径下。
下载路径:liberime.so
增加 Emacs 配置
在增加配置之前,先检查一下 Emacs 是否支持 module-load
如果不支持,请优先安装支持的版本,建议使用 emacs-mac 中的版本。
(use-package pyim
:demand t
:diminish pyim-isearch-mode
:init
(setq default-input-method "pyim"
pyim-title "ㄓ"
pyim-default-scheme 'rime
pyim-page-length 7
pyim-page-tooltip 'proframe)
:config
(setq-default pyim-english-input-switch-functions
'(pyim-probe-dynamic-english
pyim-probe-evil-normal-mode
pyim-probe-program-mode
pyim-probe-org-structure-template))
(setq-default pyim-punctuation-half-width-functions
'(pyim-probe-punctuation-line-beginning
pyim-probe-punctuation-after-punctuation))
(pyim-isearch-mode t)
:bind ("M-j" . pyim-convert-string-at-point))
(use-package liberime
:load-path (lambda () (expand-file-name "rime" user-emacs-directory))
:custom
(rime_share_data_dir "/Library/Input Methods/Squirrel.app/Contents/SharedSupport/")
(rime_user_data_dir (expand-file-name "rime" user-emacs-directory))
:init
(module-load (expand-file-name "liberime.so" user-emacs-directory))
:config
;; 配置同步文件夹
(liberime-start rime_share_data_dir rime_user_data_dir)
(liberime-select-schema "wubi86"))
(use-package posframe)
(provide 'modules-pyim)
重启 Emacs 就可以使用 pyim 替代原有的输入法了。
文章首发于:https://www.zucchiniy.cn