[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/pyim 054fda6: Update README.org and Development.org
From: |
ELPA Syncer |
Subject: |
[elpa] externals/pyim 054fda6: Update README.org and Development.org |
Date: |
Wed, 28 Apr 2021 08:57:10 -0400 (EDT) |
branch: externals/pyim
commit 054fda6b93e55485ca4f2f5839bcde8801527a99
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>
Update README.org and Development.org
---
Development.org | 24 +++++
README.org | 318 ++++++++++++++++++++++++++------------------------------
2 files changed, 170 insertions(+), 172 deletions(-)
diff --git a/Development.org b/Development.org
new file mode 100644
index 0000000..5239d7b
--- /dev/null
+++ b/Development.org
@@ -0,0 +1,24 @@
+#+TITLE: PYIM 设计开发手册
+#+AUTHOR: Feng Shu
+
+* 整体架构
+#+begin_example
+-----------------------------------------------------------------------------------------------
+| 用户命令层: Pyim 用户命令,Entered 用户命令 |
|
+| Cregexp 用户命令,Cstring 用户命令 |
|
+| Dict 管理命令,标点用户命令,Pymap 管理命令 | |
+-------------------------------------------------------------------|
|
+| PYIM流程层: Entered, Outcome | PYIM 视图层:Page, Preview |
|
+-------------------------------------------------------------------|
|
+| PYIM组件层: Imobjs, Codes, Candidates, Punctuations |
Scheme |
+| Cregexp, Cstring, Probe, Autoselector |
Assistant-scheme |
+| Pinyin |
Common |
+|------------------------------------------------------------------|
|
+| 词库缓存接口层: Dcache |
|
+-------------------------------------------------------------------|
|
+| 词库缓存实现层: Dregcache, Dhashcache |
|
+-------------------------------------------------------------------|
|
+| 词库文件层: Dict, Pymap |
|
+----------------------------------------------------------------------------------------------|
+#+end_example
+
diff --git a/README.org b/README.org
index 53b4027..9a6e521 100644
--- a/README.org
+++ b/README.org
@@ -1,51 +1,52 @@
# Created 2021-04-23 Fri 09:25
-#+TITLE: 一个 Emacs 中文输入法,支持全拼,双拼,五笔,仓颉 和 Rime 等多种输入模式,是一个 GNU elpa 包。
+#+TITLE: PYIM 是一个 Emacs 中文输入法,支持全拼,双拼,五笔,仓颉 和 Rime 等
#+AUTHOR: Feng Shu
-* pyim 使用说明 :README:doc:
-** 截图
+* 截图
[[file:./snapshots/pyim-linux-x-with-toolkit.png]]
-** 简介
-pyim 是 Emacs 环境下的一个中文输入法,最初它只支持全拼输入,所以当时
-"pyim" 代表 "Chinese Pinyin Input Method" 的意思,后来根据同学的提议,
-添加了五笔的支持,再叫 “拼音输入法” 就不太合适了,所以你现在可以将它理解
-为 “PengYou input method”: 平时像朋友一样帮助你,偶尔也像朋友一样犯二 。。。
+* 简介
+pyim 是 Emacs 环境下的一个中文输入法,最初它只支持全拼输入,所以当时 "pyim" 代表
+"Chinese Pinyin Input Method" 的意思,后来根据同学的提议,添加了五笔等输入法的支
+持,再叫 “拼音输入法” 就不太合适了,所以你现在可以叫它 “朋友输入法”
-** 背景
-pyim 的代码源自 emacs-eim。
+#+begin_center
+ (Peng You input method)
+#+end_center
-emacs-eim 是 Emacs 环境下的一个中文输入法框架, 支持拼音,五笔,仓颉以及二笔等
-多种输入法,但遗憾的是,2008 年之后它就停止了开发,我认为主要原因是外部中文输入法快速发展。
-虽然外部输入法功能强大,但不能和 Emacs 默契的配合,这一点极大的损害了 Emacs 那种 *行云流水*
-的感觉。而本人在使用(或者叫折腾) emacs-eim 的过程中发现:
+* 背景
+pyim 的代码源自 Emacs-eim。
-1. *当 emacs-eim 词库词条超过 100 万时,选词频率大大降低,中文体验增强。*
-2. *随着使用时间的延长,emacs-eim 会越来越好用(个人词库的积累)。*
+Emacs-eim 是 Emacs 环境下的一个中文输入法框架, 支持拼音,五笔,仓颉以及二笔等多
+种输入法,但遗憾的是,2008 年之后它就停止了开发。
-于是我 fork 了 emacs-eim 输入法的部分代码, 创建了一个项目:pyim。
+虽然外部输入法功能强大,但不能和 Emacs 默契的配合,这一点极大的损害了 Emacs 那种
+*行云流水* 的感觉。而本人在使用 Emacs-eim 的过程中发现:
-** 目标
+1. *当 Emacs-eim 词库词条很大时,选词频率大大降低,中文体验增强。*
+2. *随着使用时间的延长,Emacs-eim 会越来越好用(个人词库的积累)。*
+
+于是我 fork 了 Emacs-eim 输入法的部分代码, 创建了新项目:pyim。
+
+* 目标
pyim 的目标是: *尽最大的努力成为一个好用的 Emacs 中文输入法* ,
具体可表现为三个方面:
-1. Fallback: 当外部输入法不能使用时,比如在 console 或者 cygwin 环境
- 下,尽最大可能让 Emacs 用户不必为输入中文而烦恼。
-2. Integration: 尽最大可能减少输入法切换频率,让中文输入不影响 Emacs
- 的体验。
-3. Exchange: 尽最大可能简化 pyim 使用其他优秀输入法的词库
- 的难度和复杂度。
+1. Fallback: 当外部输入法不能使用时,比如在 console 或者 cygwin 环境下,尽最大可
+ 能让 Emacs 用户不必为输入中文而烦恼。
+2. Integration: 尽最大可能减少输入法切换频率,让中文输入不影响 Emacs的体验。
+3. Exchange: 尽最大可能简化 pyim 使用其他优秀输入法的词库的难度和复杂度。
-** 特点
-1. pyim 支持全拼,双拼,五笔和仓颉,其中对全拼的支持最好。
+* 特点
+1. pyim 支持全拼,双拼,五笔和仓颉等,其中对全拼的支持最好。
2. pyim 通过添加词库的方式优化输入法。
3. pyim 使用文本词库格式,方便处理。
+4. pyim 可以作为 rime 的前端使用。
-** 安装
-1. 配置 melpa 源,参考:http://melpa.org/#/getting-started
-2. M-x package-install RET pyim RET
-3. 在 Emacs 配置文件中(比如: ~/.emacs)添加如下代码:
+* 安装
+1. M-x package-install RET pyim RET
+2. 在 Emacs 配置文件中(比如: ~/.emacs)添加如下代码:
#+begin_example
(require 'pyim)
(require 'pyim-basedict) ; 拼音词库设置,五笔用户 *不需要* 此行设置
@@ -53,9 +54,9 @@ pyim 的目标是: *尽最大的努力成为一个好用的 Emacs 中文输入
(setq default-input-method "pyim")
#+end_example
-** 配置
+* 配置
-*** 配置实例
+** 配置实例
对 pyim 感兴趣的同学,可以看看本人的 pyim 配置,但要注意不要乱抄探针配置。
#+begin_src elisp
@@ -63,10 +64,10 @@ pyim 的目标是: *尽最大的努力成为一个好用的 Emacs 中文输入
(setq default-input-method "pyim")
-;; M-j 为金手指,可以将光标出的编码,比如拼音,转换为中文
+;; 金手指设置,可以将光标处的编码,比如:拼音字符串,转换为中文。
(global-set-key (kbd "M-j") 'pyim-convert-string-at-point)
-;; 按 C-<return> 将光标前的 regexp 转换为可以搜索中文的 regexp.
+;; 按 "C-<return>" 将光标前的 regexp 转换为可以搜索中文的 regexp.
(define-key minibuffer-local-map (kbd "C-<return>")
'pyim-cregexp-convert-at-point)
;; 我使用全拼
@@ -74,12 +75,12 @@ pyim 的目标是: *尽最大的努力成为一个好用的 Emacs 中文输入
;; (setq pyim-default-scheme 'wubi)
;; (setq pyim-default-scheme 'cangjie)
-;; ;; pyim 探针设置
-;; ;; 设置 pyim 探针设置,这是 pyim 高级功能设置,可以实现 *无痛* 中英文切换 :-)
-;; ;; 我自己使用的中英文动态切换规则是:
-;; ;; 1. 光标只有在注释里面时,才可以输入中文。
-;; ;; 2. 光标前是汉字字符时,才能输入中文。
-;; ;; 3. 使用 M-j 快捷键,强制将光标前的拼音字符串转换为中文。
+;; pyim 探针设置
+;; 设置 pyim 探针设置,这是 pyim 高级功能设置,可以实现 *无痛* 中英文切换 :-)
+;; 我自己使用的中英文动态切换规则是:
+;; 1. 光标只有在注释里面时,才可以输入中文。
+;; 2. 光标前是汉字字符时,才能输入中文。
+;; 3. 使用 M-j 快捷键,强制将光标前的拼音字符串转换为中文。
;; (setq-default pyim-english-input-switch-functions
;; '(pyim-probe-dynamic-english
;; pyim-probe-isearch-mode
@@ -90,7 +91,7 @@ pyim 的目标是: *尽最大的努力成为一个好用的 Emacs 中文输入
;; '(pyim-probe-punctuation-line-beginning
;; pyim-probe-punctuation-after-punctuation))
-;; 开启拼音搜索功能
+;; 开启代码搜索中文功能(比如拼音,五笔码等)
(pyim-isearch-mode 1)
;; 设置选词框的绘制方式
@@ -106,22 +107,22 @@ pyim 的目标是: *尽最大的努力成为一个好用的 Emacs 中文输入
(pyim-basedict-enable)
#+end_src
-*** 添加词库文件
-pyim 当前的默认的拼音词库是 pyim-basedict, 这个词库的词条量
-8 万左右,是一个 *非常小* 的拼音词库,词条来源于:libpinyin 项目
+** 添加词库文件
+pyim 当前的默认的拼音词库是 pyim-basedict, 这个词库的词条量8万左右,是一个 *非
+常小* 的拼音词库,源于:libpinyin 项目
-如果 pyim-basedict 不能满足需求,用户可以使用其他方式为 pyim 添加拼音词库,
-具体方式请参考 [[如何添加自定义拼音词库]] 小结。
+如果 pyim-basedict 不能满足需求,用户可以使用其他方式为 pyim 添加拼音词库,具体
+方式请参考 [[如何添加自定义拼音词库]] 小结。
-*** 激活 pyim
+** 激活 pyim
#+begin_example
(setq default-input-method "pyim")
(global-set-key (kbd "C-\\") 'toggle-input-method)
#+end_example
-** 使用
-*** 常用快捷键
+* 使用
+** 常用快捷键
| 输入法快捷键 | 功能 |
|-----------------------+----------------------------|
| C-n 或 M-n 或 + 或 . | 向下翻页 |
@@ -137,7 +138,7 @@ pyim 当前的默认的拼音词库是 pyim-basedict, 这个词库的词条量
| C-DEL 或 C-BACKSPACE | 删除最后一个拼音 |
| M-DEL 或 M-BACKSPACE | 删除最后一个拼音 |
-*** 使用双拼模式
+** 使用双拼模式
pyim 支持双拼输入模式,用户可以通过变量 `pyim-default-scheme' 来设定:
#+begin_example
@@ -149,18 +150,18 @@ pyim 支持双拼输入模式,用户可以通过变量 `pyim-default-scheme'
2. 用户可以使用函数 `pyim-scheme-add' 添加自定义双拼方案。
3. 用户可能需要重新设置 `pyim-outcome-trigger'。
-*** 使用 rime 输入法
+** 使用 rime 输入法
具体安装和使用方式请查看 pyim-liberime 包的 Commentary 部分。
-*** 使用型码输入法
+** 使用型码输入法
1. 五笔输入法可以参考: https://github.com/tumashu/pyim-wbdict
2. 仓颉输入法可以参考:https://github.com/p1uxtar/pyim-cangjie5dict
3. 三码郑码(至至郑码)输入法可以参考: https://github.com/p1uxtar/pyim-smzmdict
-如果用户在使用型码输入法的过程中,忘记了某个字的编码,可以按 TAB 键临时切换到辅助
-输入法来输入,辅助输入法可以通过 `pyim-assistant-scheme' 来设置。
+如果用户在使用型码输入法的过程中,忘记了某个字的编码,可以按 TAB 键临时切换到辅
+助输入法来输入,辅助输入法可以通过 `pyim-assistant-scheme' 来设置。
-*** 让选词框跟随光标
+** 让选词框跟随光标
用户可以通过下面的设置让 pyim 在 *光标处* 显示一个选词框:
1. 使用 popup 包来绘制选词框 (emacs overlay 机制)
@@ -173,10 +174,9 @@ pyim 支持双拼输入模式,用户可以通过变量 `pyim-default-scheme'
#+end_example
注意:pyim 不会自动安装 posframe, 用户需要手动安装这个包,
-*** 调整 tooltip 选词框的显示样式
-pyim 的 tooltip 选词框默认使用 *双行显示* 的样式,在一些特
-殊的情况下(比如:popup 显示的菜单错位),用户可以使用 *单行显示*
-的样式:
+** 调整 tooltip 选词框的显示样式
+pyim 的选词框默认使用 *双行显示* 的样式,在一些特殊的情况下(比如:popup 显示的
+菜单错位),用户可以使用 *单行显示*的样式:
#+begin_example
(setq pyim-page-style 'one-line)
@@ -184,15 +184,16 @@ pyim 的 tooltip 选词框默认使用 *双行显示* 的样式,在一些特
注:用户可以添加函数 pyim-page-style:STYLENAME 来定义自己的选词框格式。
-*** 设置模糊音
+** 设置模糊音
可以通过设置 `pyim-pinyin-fuzzy-alist' 变量来自定义模糊音。
-*** 使用魔术转换器
-用户可以将待选词条作 “特殊处理” 后再 “上屏”,比如 “简体转繁体” 或者
-“输入中文,上屏英文” 之类的。
+** 使用魔术转换器
+用户可以将待选词 “特殊处理” 后再 “上屏”,比如 “简体转繁体” 或者 “输入中文,上屏
+英文” 之类的。
+
+用户需要设置 `pyim-magic-converter', 比如:下面这个例子实现,输入 “二呆”,“一个
+超级帅的小伙子” 上屏 :-)
-用户需要设置 `pyim-magic-converter', 比如:下面这个例子实现,
-输入 “二呆”,“一个超级帅的小伙子” 上屏 :-)
#+begin_example
(defun my-converter (string)
(if (equal string "二呆")
@@ -201,38 +202,39 @@ pyim 的 tooltip 选词框默认使用 *双行显示* 的样式,在一些特
(setq pyim-magic-converter #'my-converter)
#+end_example
-*** 切换全角标点与半角标点
+** 切换全角标点与半角标点
-1. 第一种方法:使用命令 `pyim-punctuation-toggle',全局切换。
- 这个命令主要用来设置变量: `pyim-punctuation-translate-p', 用户也可以
- 手动设置这个变量, 比如:
+1. 第一种方法:使用命令 `pyim-punctuation-toggle',全局切换。这个命令主要用来设
+ 置变量: `pyim-punctuation-translate-p', 用户也可以手动设置这个变量, 比如:
+
#+begin_example
(setq pyim-punctuation-translate-p '(yes no auto)) ;使用全角标点。
(setq pyim-punctuation-translate-p '(no yes auto)) ;使用半角标点。
(setq pyim-punctuation-translate-p '(auto yes no)) ;中文使用全角标点,英文使用半角标点。
#+end_example
-2. 第二种方法:使用命令 `pyim-punctuation-translate-at-point' 只切换光
- 标处标点的样式。
-3. 第三种方法:设置变量 `pyim-outcome-trigger' ,输入变量设定的
- 字符会切换光标处标点的样式。
-
-*** 手动加词和删词
-
-1. `pyim-create-Ncchar-word-at-point 这是一组命令,从光标前提取N个汉
- 字字符组成字符串,并将其加入个人词库。
-2. `pyim-outcome-trigger' 以默认设置为例:在“我爱吃红烧肉”后输
- 入“5v” 可以将“爱吃红烧肉”这个词条保存到用户个人词库。
-3. `pyim-create-word-from-selection', 选择一个词条,运行这个命令后,就
- 可以将这个词条添加到个人词库。
+
+2. 第二种方法:使用命令 `pyim-punctuation-translate-at-point' 只切换光标处标点的
+ 样式。
+3. 第三种方法:设置变量 `pyim-outcome-trigger' ,输入变量设定的字符会切换光标处
+ 标点的样式。
+
+** 手动加词和删词
+
+1. `pyim-create-Ncchar-word-at-point 这是一组命令,从光标前提取N个汉字字符组成字
+ 符串,并将其加入个人词库。
+2. `pyim-outcome-trigger' 以默认设置为例:在 “我爱吃红烧肉” 后输入 “5v”,可以将
+ “爱吃红烧肉”这个词条保存到用户个人词库。
+3. `pyim-create-word-from-selection', 选择一个词条,运行这个命令后,就可以将这个
+ 词条添加到个人词库。
4. `pyim-delete-word' 从个人词库中删除当前高亮选择的词条。
-*** pyim 高级功能
+** pyim 高级功能
1. 根据环境自动切换到英文输入模式,使用 pyim-english-input-switch-functions 配置。
2. 根据环境自动切换到半角标点输入模式,使用 pyim-punctuation-half-width-functions 配置。
注意:上述两个功能使用不同的变量设置, *千万不要搞错* 。
-**** 根据环境自动切换到英文输入模式
+*** 根据环境自动切换到英文输入模式
| 探针函数 | 功能说明
|
|-----------------------------------+-----------------------------------------------------------------------------------|
@@ -258,10 +260,10 @@ pyim 的 tooltip 选词框默认使用 *双行显示* 的样式,在一些特
注意事项:
1. 上述函数列表中,任意一个函数的返回值为 t 时,pyim 切换到英文输入模式。
-2. [[https://github.com/DogLooksGood/emacs-rime][Emacs-rime]] 和
[[https://github.com/laishulu/emacs-smart-input-source][smart-input-source]]
- 也有类似探针的功能,其对应函数可以直接或者简单包装后作为 pyim 探针使用,有兴趣的同学可以了解一下。
+2. [[https://github.com/DogLooksGood/emacs-rime][Emacs-rime]] 和
[[https://github.com/laishulu/emacs-smart-input-source][smart-input-source]]
也有类似探针的功能,其对应函数可以直接或者简
+ 单包装后作为 pyim 探针使用,有兴趣的同学可以了解一下。
-**** 根据环境自动切换到半角标点输入模式
+*** 根据环境自动切换到半角标点输入模式
| 探针函数 | 功能说明 |
|------------------------------------------+----------------------------|
@@ -279,30 +281,9 @@ pyim 的 tooltip 选词框默认使用 *双行显示* 的样式,在一些特
注:上述函数列表中,任意一个函数的返回值为 t 时,pyim 切换到半角标点输入模式。
-** 开发
-
-*** 整体架构
-#+begin_example
------------------------------------------------------------------------------------------------
-| 用户命令层: Pyim 用户命令,Entered 用户命令 |
|
-| Cregexp 用户命令,Cstring 用户命令 |
|
-| Dict 管理命令,标点用户命令,Pymap 管理命令 | |
--------------------------------------------------------------------|
|
-| PYIM流程层: Entered, Outcome | PYIM 视图层:Page, Preview |
|
--------------------------------------------------------------------|
|
-| PYIM组件层: Imobjs, Codes, Candidates, Punctuations |
Scheme |
-| Cregexp, Cstring, Probe, Autoselector |
Assistant-scheme |
-| Pinyin |
Common |
-|------------------------------------------------------------------|
|
-| 词库缓存接口层: Dcache |
|
--------------------------------------------------------------------|
|
-| 词库缓存实现层: Dregcache, Dhashcache |
|
--------------------------------------------------------------------|
|
-| 词库文件层: Dict, Pymap |
|
-----------------------------------------------------------------------------------------------|
-#+end_example
-
-** 捐赠
+* 开发
+请参考 [[file:Development.org][Development.org]] 文档
+* 捐赠
您可以通过小额捐赠的方式支持 pyim 的开发工作,具体方式:
1. 通过支付宝收款账户:tumashu@163.com
@@ -310,44 +291,40 @@ pyim 的 tooltip 选词框默认使用 *双行显示* 的样式,在一些特
[[file:snapshots/QR-code-for-author.jpg]]
+* Tips
-** Tips
-
-*** 关闭输入联想词功能 (默认开启)
+** 关闭输入联想词功能 (默认开启)
#+begin_example
(setq pyim-enable-shortcode nil)
#+end_example
-*** 如何将个人词条相关信息导入和导出?
+** 如何将个人词条相关信息导入和导出?
1. 导入使用命令: pyim-dcache-import
2. 导出使用命令: pyim-dcache-export
-*** pyim 出现错误时,如何开启 debug 模式
+** pyim 出现错误时,如何开启 debug 模式
#+begin_example
(setq debug-on-error t)
#+end_example
-*** 如何查看 pyim 文档。
-pyim 的文档隐藏在 comment 中,如果用户喜欢阅读 html 格式的文档,
-可以查看在线文档;
-
-http://tumashu.github.io/pyim/
+** 将光标处的拼音或者五笔字符串转换为中文 (与 vimim 的 “点石成金” 功能类似)
-*** 将光标处的拼音或者五笔字符串转换为中文 (与 vimim 的 “点石成金” 功能类似)
#+begin_example
(global-set-key (kbd "M-i") 'pyim-convert-string-at-point)
#+end_example
-*** 如何使用其它字符翻页
+** 如何使用其它字符翻页
+
#+begin_example
(define-key pyim-mode-map "." 'pyim-page-next-page)
(define-key pyim-mode-map "," 'pyim-page-previous-page)
#+end_example
-*** 如何用 ";" 来选择第二个候选词
+** 如何用 ";" 来选择第二个候选词
+
#+begin_example
(define-key pyim-mode-map ";"
(lambda ()
@@ -355,24 +332,12 @@ http://tumashu.github.io/pyim/
(pyim-select-word-by-number 2)))
#+end_example
-*** 如何添加自定义拼音词库
-pyim 默认没有携带任何拼音词库,用户可以使用下面几种方式,获取
-质量较好的拼音词库:
+** 如何添加自定义拼音词库
+pyim 默认没有携带任何拼音词库,用户可以使用下面几种方式,获取质量较好的拼音词库:
-**** 第一种方式 (懒人推荐使用)
+*** 第-种方式 (Windows 用户推荐使用)
-获取其他 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平
+使用词库转换工具将其他输入法的词库转化为 pyim 使用的词库:这里只介绍 windows 平
台下的一个词库转换软件:
1. 软件名称: imewlconverter
@@ -388,24 +353,23 @@ emacs,这个词库使用 `utf-8-unix' 编码。
[[file:snapshots/imewlconverter-wordfreq.gif]]
-生成词库后,运行 `pyim-dicts-manager' ,按照命令提示,将转换得到的词库文件的信息添加到 `pyim-dicts' 中,
-完成后运行命令 `pyim-restart' 或者重启emacs。
+生成词库后,运行 `pyim-dicts-manager' ,按照命令提示,将转换得到的词库文件的信息
+添加到 `pyim-dicts' 中,完成后运行命令 `pyim-restart' 或者重启emacs。
-**** 第三种方式 (Linux & Unix 用户推荐使用)
-E-Neo 同学编写了一个词库转换工具: [[https://github.com/E-Neo/scel2pyim][scel2pyim]] ,
-可以将一个搜狗词库转换为 pyim 词库。
+*** 第二种方式 (Linux & Unix 用户推荐使用)
+E-Neo 同学编写了一个词库转换工具: [[https://github.com/E-Neo/scel2pyim][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文件中添加如下一行配置。
+在 ~/.emacs 文件中添加如下一行配置。
#+begin_example
(setq pyim-dicts
@@ -418,23 +382,22 @@ E-Neo 同学编写了一个词库转换工具: [[https://github.com/E-Neo/scel2p
2. 必须使用词库文件的绝对路径。
3. 词库文件的编码必须为 utf-8-unix,否则会出现乱码。
-*** Emacs 启动时加载 pyim 词库
+** Emacs 启动时加载 pyim 词库
#+begin_example
(add-hook 'emacs-startup-hook
(lambda () (pyim-restart-1 t)))
#+end_example
-*** 将汉字字符串转换为拼音字符串
-下面两个函数可以将中文字符串转换的拼音字符串或者列表,用于 emacs-lisp
-编程。
+** 将汉字字符串转换为拼音字符串
+下面两个函数可以将中文字符串转换的拼音字符串或者列表,用于 emacs-lisp 编程。
1. `pyim-cstring-to-pinyin' (考虑多音字)
2. `pyim-cstring-to-pinyin-simple' (不考虑多音字)
-*** 中文分词
-pyim 包含了一个简单的分词函数:`pyim-cstring-split-to-list', 可以
-将一个中文字符串分成一个词条列表,比如:
+** 中文分词
+pyim 包含了一个简单的分词函数:`pyim-cstring-split-to-list', 可以将一个中文字符
+串分成一个词条列表,比如:
#+begin_example
(("天安" 5 7)
@@ -443,24 +406,24 @@ pyim 包含了一个简单的分词函数:`pyim-cstring-split-to-list', 可以
("我爱" 1 3))
#+end_example
-其中,每一个词条列表中包含三个元素,第一个元素为词条本身,第二个元素为词条
-相对于字符串的起始位置,第三个元素为词条结束位置。
+其中,每一个词条列表中包含三个元素,第一个元素为词条本身,第二个元素为词条相对于
+字符串的起始位置,第三个元素为词条结束位置。
另一个分词函数是 `pyim-cstring-split-to-string', 这个函数将生成一个新的字符串,
在这个字符串中,词语之间用空格或者用户自定义的分隔符隔开。
-注意,上述两个分词函数使用暴力匹配模式来分词,所以, *不能检测出* pyim
-词库中不存在的中文词条。
+注意,上述两个分词函数使用暴力匹配模式来分词,所以,*不能检测出* pyim 词库中不存
+在的中文词条。
-*** 获取光标处的中文词条
-pyim 包含了一个简单的命令:`pyim-cstring-words-at-point', 这个命令
-可以得到光标处的 *英文* 或者 *中文* 词条的 *列表*,这个命令依赖分词函数:
+** 获取光标处的中文词条
+pyim 包含了一个简单的命令:`pyim-cstring-words-at-point', 这个命令可以得到光标处
+的 *英文* 或者 *中文* 词条的 *列表*,这个命令依赖分词函数:
`pyim-cstring-split-to-list'。
-*** 让 `forward-word' 和 `back-backward’ 在中文环境下正常工作
-中文词语没有强制用空格分词,所以 Emacs 内置的命令 `forward-word' 和 `backward-word'
-在中文环境不能按用户预期的样子执行,而是 forward/backward “句子” ,pyim
-自带的两个命令可以在中文环境下正常工作:
+** 让 `forward-word' 和 `back-backward’ 在中文环境下正常工作
+中文词语没有强制用空格分词,所以 Emacs 内置的命令 `forward-word' 和
+`backward-word' 在中文环境不能按用户预期的样子执行,而是 forward/backward “句子”
+,pyim自带的两个命令可以在中文环境下正常工作:
1. `pyim-forward-word
2. `pyim-backward-word
@@ -472,34 +435,45 @@ pyim 包含了一个简单的命令:`pyim-cstring-words-at-point', 这个命
(global-set-key (kbd "M-b") 'pyim-backward-word)
#+end_example
-*** 为 isearch 相关命令添加拼音搜索支持
+** 为 isearch 相关命令添加拼音搜索支持
pyim 安装后,可以通过下面的设置开启拼音搜索功能:
#+begin_example
(pyim-isearch-mode 1)
#+end_example
-注意:这个功能有一些限制,搜索字符串中只能出现 “a-z” 和 “’”,如果有
-其他字符(比如 regexp 操作符),则自动关闭拼音搜索功能。
+注意:这个功能有一些限制,搜索字符串中只能出现 “a-z” 和 “’”,如果有其他字符(比
+如 regexp 操作符),则自动关闭拼音搜索功能。
开启这个功能后,一些 isearch 扩展有可能失效,如果遇到这种问题,
只能禁用这个 Minor-mode,然后联系 pyim 的维护者,看有没有法子实现兼容。
-用户激活这个 mode 后,可以使用下面的方式 *强制关闭* isearch 搜索框中文输入
-(即使在 pyim 激活的时候)。
+用户激活这个 mode 后,可以使用下面的方式 *强制关闭* isearch 搜索框中文输入(即使
+在 pyim 激活的时候)。
#+begin_example
(setq-default pyim-english-input-switch-functions
'(pyim-probe-isearch-mode))
#+end_example
-*** 让 ivy 支持拼音搜索候选项功能
+** 创建一个搜索中文的 regexp
+
+#+begin_src emacs-lisp
+(pyim-cregexp-build ".*nihao.*")
+#+end_src
+
+#+RESULTS:
+:
\(?:.*\(?:nihao\|[乜伲佞你倪凝匿呢咛啮嗫坭埝妞妮娘嬲孽宁尼尿嵲年廿念忸怩恁您慝扭拈拗拟拧捏捻摄撵旎昵杻柠氽泞泥涅溺牛狃狞猊甯疒睨碾祢粘糵纽聂聍脲腻臬苧茑菍蔫薿蘖蚴袅蹑辇辗逆酿钮铌镊镍陧霓颞鲇鲵鲶鸟鸮鹝鹢麑黏][号嗥嚆嚎壕好昊毫浩淏濠灏皓皞耗蒿薅蚝诐豪貉郝鄗镐颢鸮]\).*\)
+
+** 让 ivy 支持拼音搜索候选项功能
+
#+begin_example
(setq ivy-re-builders-alist
'((t . pyim-cregexp-ivy)))
#+end_example
-*** 让 vertico, selectrum 等补全框架,通过 orderless 支持拼音搜索候选项功能。
+** 让 vertico, selectrum 等补全框架,通过 orderless 支持拼音搜索候选项功能。
+
#+begin_example
(defun my-orderless-regexp (orig_func component)
(let ((result (funcall orig_func component)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/pyim 054fda6: Update README.org and Development.org,
ELPA Syncer <=