在 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