ZucchinY

在 Emacs 中使用外部输入法,最大的问题是在切换 evil 的模式的时候,对输入来说会有延迟,因为需要手工将输入法切换到对应的英文模式,才能正常使用快捷键。

但是如果使用的是 Emacs 自己的输入功能,则不需要做这些同步,只需要从 insert 模式中退出即可,这种操作对 Emacs 来说真的是太方便了。

经过几次尝试之后,一点点测试出了配置过程中出现的问题,现在整理如下。

编译 librime

因为本人使用的是 Mac 系统,所以需要先安装一些工具。

1
brew install cmake git boost

这三个工具是编译 liberime 用的,本来想从 GitHub 上下载,但是有问题,所以决定自己编译一份,这里测试了一下,只使用 CommandLineTools 是不行的,需要安全安装 xcode 才可以。

  1. 下载 librime 版本库
1
git clone --recursive https://github.com/rime/librime.git
  1. 编译第三方库
1
2
cd librime
make xcode/thirdparty
  1. 编译 librime
1
make xcode

编译 liberime

编译这个是依赖于 librime 文件的,需要先将依赖引进来。

  1. 下载 liberime 项目
1
git clone git@github.com:merrickluo/liberime.git
  1. 引入 librime 依赖
1
export RIME_PATH=~/DEV/librime
  1. 编译 liberime 文件
1
make liberime
  1. 然后将 liberime 加入到 .emacs.d 项目中

如果不想自己编译的话,也可以直接下载我编译好的文件,但是需要把文件存放到一个指定的路径下。

下载路径:liberime.so

增加 Emacs 配置

在增加配置之前,先检查一下 Emacs 是否支持 module-load 如果不支持,请优先安装支持的版本,建议使用 emacs-mac 中的版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(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 替代原有的输入法了。