Tips

如何将个人词条导出到一个文件

使用命令:pyim-dcache-export-personal-dcache

pyim 出现错误时,如何开启 debug 模式

  1. (setq debug-on-error t)

如何查看 pyim 文档。

pyim 的文档隐藏在 comment 中,如果用户喜欢阅读 html 格式的文档,可以查看在线文档;

http://tumashu.github.io/pyim/

将光标处的拼音或者五笔字符串转换为中文 (与 vimim 的 “点石成金” 功能类似)

  1. (global-set-key (kbd "M-i") 'pyim-convert-code-at-point)

如何添加自定义拼音词库

pyim 默认没有携带任何拼音词库,用户可以使用下面几种方式,获取质量较好的拼音词库:

  1. 第一种方式 (懒人推荐使用)

    获取其他 pyim 用户的拼音词库,比如,某个同学测试 pyim
    时创建了一个中文拼音词库,词条数量大约60万。

    http://tumashu.github.io/pyim-bigdict/pyim-bigdict.pyim.gz

    下载上述词库后,运行 `pyim-dicts-manager’ ,按照命令提示,将下载得到的词库文件信息添加到 `pyim-dicts’ 中,最后运行命令 `pyim-restart’ 或者重启
    emacs,这个词库使用 `utf-8-unix’ 编码。

  2. 第二种方式 (Windows 用户推荐使用)

    使用词库转换工具将其他输入法的词库转化为pyim使用的词库:这里只介绍windows平台下的一个词库转换软件:

    1. 软件名称: imewlconverter
    2. 中文名称: 深蓝词库转换
    3. 下载地址: https://github.com/studyzy/imewlconverter
    4. 依赖平台: Microsoft .NET Framework (>= 3.5)

    使用方式:

    img

    如果生成的词库词频不合理,可以按照下面的方式处理(非常有用的功能):

    img

    生成词库后,运行 `pyim-dicts-manager’ ,按照命令提示,将转换得到的词库文件的信息添加到 `pyim-dicts’ 中,完成后运行命令 `pyim-restart’ 或者重启emacs。

  3. 第三种方式 (Linux & Unix 用户推荐使用)

    E-Neo 同学编写了一个词库转换工具: scel2pyim ,
    可以将一个搜狗词库转换为 pyim 词库。

    1. 软件名称: scel2pyim
    2. 下载地址: https://github.com/E-Neo/scel2pyim
    3. 编写语言: C语言

如何手动安装和管理词库

这里假设有两个词库文件:

  1. /path/to/pyim-dict1.pyim
  2. /path/to/pyim-dict2.pyim

在~/.emacs文件中添加如下一行配置。

  1. (setq pyim-dicts
  2. '((:name "dict1" :file "/path/to/pyim-dict1.pyim")
  3. (:name "dict2" :file "/path/to/pyim-dict2.pyim")))

注意事项:

  1. 只有 :file 是 必须 设置的。
  2. 必须使用词库文件的绝对路径。
  3. 词库文件的编码必须为 utf-8-unix,否则会出现乱码。

Emacs 启动时加载 pyim 词库

  1. (add-hook 'emacs-startup-hook
  2. #'(lambda () (pyim-restart-1 t)))

将汉字字符串转换为拼音字符串

下面两个函数可以将中文字符串转换的拼音字符串或者列表,用于 emacs-lisp
编程。

  1. `pyim-hanzi2pinyin’ (考虑多音字)
  2. `pyim-hanzi2pinyin-simple’ (不考虑多音字)

中文分词

pyim 包含了一个简单的分词函数:`pyim-cstring-split-to-list’, 可以将一个中文字符串分成一个词条列表,比如:

  1. (("天安" 5 7)
  2. 我爱北京天安门 -> ("天安门" 5 8)
  3. ("北京" 3 5)
  4. ("我爱" 1 3))

其中,每一个词条列表中包含三个元素,第一个元素为词条本身,第二个元素为词条相对于字符串的起始位置,第三个元素为词条结束位置。

另一个分词函数是 `pyim-cstring-split-to-string’, 这个函数将生成一个新的字符串,在这个字符串中,词语之间用空格或者用户自定义的分隔符隔开。

注意,上述两个分词函数使用暴力匹配模式来分词,所以, 不能检测出 pyim
词库中不存在的中文词条。

获取光标处的中文词条

pyim 包含了一个简单的命令:`pyim-cwords-at-point’, 这个命令可以得到光标处的 英文 或者 中文 词条的 *列表*,这个命令依赖分词函数:
`pyim-cstring-split-to-list’。

让 `forward-word’ 和 `back-backward’ 在中文环境下正常工作

中文词语没有强制用空格分词,所以 Emacs 内置的命令 `forward-word’ 和 `backward-word’
在中文环境不能按用户预期的样子执行,而是 forward/backward “句子” ,pyim
自带的两个命令可以在中文环境下正常工作:

  1. `pyim-forward-word
  2. `pyim-backward-word

用户只需将其绑定到快捷键上就可以了,比如:

  1. (global-set-key (kbd "M-f") 'pyim-forward-word)
  2. (global-set-key (kbd "M-b") 'pyim-backward-word)

为 isearch 相关命令添加拼音搜索支持

pyim 安装后,可以通过下面的设置开启拼音搜索功能:

  1. (pyim-isearch-mode 1)

注意:这个功能有一些限制,搜索字符串中只能出现 “a-z” 和 “’”,如果有其他字符(比如 regexp 操作符),则自动关闭拼音搜索功能。

开启这个功能后,一些 isearch 扩展有可能失效,如果遇到这种问题,只能禁用这个 Minor-mode,然后联系 pyim 的维护者,看有没有法子实现兼容。

用户激活这个 mode 后,可以使用下面的方式 强制关闭 isearch 搜索框中文输入(即使在 pyim 激活的时候)。

  1. (setq-default pyim-english-input-switch-functions
  2. '(pyim-probe-isearch-mode))

Converted from pyim.el by el2org .