emacs内置中文输入法

我的配置见 https://github.com/slegetank/.emacs.d/blob/master/init/init-chinese.org

为什么不用搜狗呢?因为个人数据无法导出。所以选择了鼠须管。

为什么不用五笔呢?自己比较笨,学了几次实在学不会。

为什么要配置一个内置的输入法呢?最大的原因是由于vim模式切换很痛苦。normal-state的时候切回英文,insert-state的时候再切回去,在mac上是无法做到的。之前试过https://github.com/Lutzifer/keyboardSwitcher, 在切换的时候通过命令行切换输入法,但发现虽然系统状态栏上的变化了,但实际却并没有切换成中文。最终还是决定痛下杀手,折腾一番。

pyim

https://github.com/tumashu/pyim

内置的感觉是真的好。具体配置官方文档已经很清楚了,这里不做赘述。也可以参考我的配置。

20190331-emacschinese-0.png

liberime

但是,pyim原生的全拼补全实在是捉鸡。鼠须管虽然输入生词上仍然不如搜狗,但毕竟比pyim好太多了。pyim现在也支持了使用liberime作为后端,官方文档见:https://github.com/tumashu/pyim “通过-pyim-来支持-rime-所有输入法”小节。

liberime的作用是使用rime的librime作为后端,提供一个elisp的封装供pyim调用。

首先下载源码:

cd ~
git clone --recursive https://github.com/rime/librime.git

直接拷贝

如果系统更新了rime,那么可能需要重新拷贝一次

如果你本身是rime的用户,那么可以直接拷贝:

mkdir -p ~/librime/xbuild/lib/Release/

;; 直接拷贝,用于编译liberime
cp /Library/Input\ Methods/Squirrel.app/Contents/Frameworks/librime.1.dylib ~/librime/xbuild/lib/Release/librime.dylib

;; emacs里使用的时候会动态链接这个库
sudo cp /Library/Input\ Methods/Squirrel.app/Contents/Frameworks/librime.1.dylib /usr/local/lib

编译librime

你也可以选择自己编译。文档:https://gitlab.com/liberime/liberime/blob/master/README.org, MacOS的文档https://github.com/rime/librime/blob/master/README-mac.md

具体来说:

  1. 准备
    需要XCode。

    brew install cmake git
    brew install boost@1.60
    brew link --overwrite --force boost@1.60
    
  2. 下载源码

    cd ~
    git clone --recursive https://github.com/rime/librime.git
    
  3. 编译

    cd librime
    # 编译第三方库
    make xcode/thirdparty
    # 编译librime
    make xcode
    

注意,不要删除这个文件夹。liberime只是一个动态库,最终还是要调用这里的编译结果。

编译liberime

liberime将会使用上面编译打结果来编译liberime。

  1. 下载源码

    git clone https://gitlab.com/liberime/liberime.git
    
  2. 编译

    # 指向刚才编译的librime文件夹
    export RIME_PATH=~/librime
    cd liberime
    make liberime
    cd build
    # 将动态库拷贝到需要的目录
    cp liberime.so ~/ScriptHelper
    

    如果报错:

    ld: warning: directory not found for option '-L/Users/shuaizhao/librime/xbuild/lib/Release'
    ld: library not found for -lrime
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    则修改CMakeLists.txt中的xbuild为build。

配置

这里以我的配置作为例子:

;; 指向liberime.so所在的路径
(setq load-path (cons (file-truename "~/ScriptHelper") load-path))
(require 'liberime)
;; 第一个参数是共享文件夹,见https://github.com/rime/home/wiki/SharedData
;; 第二个参数是个人文件夹
;; 注意:设置的时候最好不要使用软链接,也不要使用 "~" 和相对路径,liberime有时候无法处理。
(liberime-start "/Library/Input Methods/Squirrel.app/Contents/SharedSupport" (file-truename "~/.emacs.d/pyim/rime/"))
(liberime-select-schema "luna_pinyin_simp")
(setq pyim-default-scheme 'rime-quanpin)

上屏问题

https://github.com/tumashu/pyim/issues/261

解法暂时是将上屏词语的数量提高。


License: CC BY-SA 4.0

Contact