Tips
如何将个人词条导出到一个文件
使用命令:pyim-dcache-export-personal-dcache
pyim 出现错误时,如何开启 debug 模式
(setq debug-on-error t)
如何查看 pyim 文档。
pyim 的文档隐藏在 comment 中,如果用户喜欢阅读 html 格式的文档,可以查看在线文档;
http://tumashu.github.io/pyim/
将光标处的拼音或者五笔字符串转换为中文 (与 vimim 的 “点石成金” 功能类似)
(global-set-key (kbd "M-i") 'pyim-convert-code-at-point)
如何添加自定义拼音词库
pyim 默认没有携带任何拼音词库,用户可以使用下面几种方式,获取质量较好的拼音词库:
第一种方式 (懒人推荐使用)
获取其他 pyim 用户的拼音词库,比如,某个同学测试 pyim
时创建了一个中文拼音词库,词条数量大约60万。http://tumashu.github.io/pyim-bigdict/pyim-bigdict.pyim.gz
下载上述词库后,运行 `pyim-dicts-manager’ ,按照命令提示,将下载得到的词库文件信息添加到 `pyim-dicts’ 中,最后运行命令 `pyim-restart’ 或者重启
emacs,这个词库使用 `utf-8-unix’ 编码。第二种方式 (Windows 用户推荐使用)
使用词库转换工具将其他输入法的词库转化为pyim使用的词库:这里只介绍windows平台下的一个词库转换软件:
- 软件名称: imewlconverter
- 中文名称: 深蓝词库转换
- 下载地址: https://github.com/studyzy/imewlconverter
- 依赖平台: Microsoft .NET Framework (>= 3.5)
使用方式:
如果生成的词库词频不合理,可以按照下面的方式处理(非常有用的功能):
生成词库后,运行 `pyim-dicts-manager’ ,按照命令提示,将转换得到的词库文件的信息添加到 `pyim-dicts’ 中,完成后运行命令 `pyim-restart’ 或者重启emacs。
第三种方式 (Linux & Unix 用户推荐使用)
E-Neo 同学编写了一个词库转换工具: scel2pyim ,
可以将一个搜狗词库转换为 pyim 词库。- 软件名称: scel2pyim
- 下载地址: https://github.com/E-Neo/scel2pyim
- 编写语言: C语言
如何手动安装和管理词库
这里假设有两个词库文件:
- /path/to/pyim-dict1.pyim
- /path/to/pyim-dict2.pyim
在~/.emacs文件中添加如下一行配置。
(setq pyim-dicts
'((:name "dict1" :file "/path/to/pyim-dict1.pyim")
(:name "dict2" :file "/path/to/pyim-dict2.pyim")))
注意事项:
- 只有 :file 是 必须 设置的。
- 必须使用词库文件的绝对路径。
- 词库文件的编码必须为 utf-8-unix,否则会出现乱码。
Emacs 启动时加载 pyim 词库
(add-hook 'emacs-startup-hook
#'(lambda () (pyim-restart-1 t)))
将汉字字符串转换为拼音字符串
下面两个函数可以将中文字符串转换的拼音字符串或者列表,用于 emacs-lisp
编程。
- `pyim-hanzi2pinyin’ (考虑多音字)
- `pyim-hanzi2pinyin-simple’ (不考虑多音字)
中文分词
pyim 包含了一个简单的分词函数:`pyim-cstring-split-to-list’, 可以将一个中文字符串分成一个词条列表,比如:
(("天安" 5 7)
我爱北京天安门 -> ("天安门" 5 8)
("北京" 3 5)
("我爱" 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
自带的两个命令可以在中文环境下正常工作:
- `pyim-forward-word
- `pyim-backward-word
用户只需将其绑定到快捷键上就可以了,比如:
(global-set-key (kbd "M-f") 'pyim-forward-word)
(global-set-key (kbd "M-b") 'pyim-backward-word)
为 isearch 相关命令添加拼音搜索支持
pyim 安装后,可以通过下面的设置开启拼音搜索功能:
(pyim-isearch-mode 1)
注意:这个功能有一些限制,搜索字符串中只能出现 “a-z” 和 “’”,如果有其他字符(比如 regexp 操作符),则自动关闭拼音搜索功能。
开启这个功能后,一些 isearch 扩展有可能失效,如果遇到这种问题,只能禁用这个 Minor-mode,然后联系 pyim 的维护者,看有没有法子实现兼容。
用户激活这个 mode 后,可以使用下面的方式 强制关闭 isearch 搜索框中文输入(即使在 pyim 激活的时候)。
(setq-default pyim-english-input-switch-functions
'(pyim-probe-isearch-mode))
Converted from pyim.el by el2org .