Skip to content

Commit

Permalink
1.1
Browse files Browse the repository at this point in the history
1. 调整目录结构并更新说明
2. 增加自动编辑英文用户字典的功能,详见说明(使用此版本必须更新rime.lua及melt_eng前缀的全部文件)
3. 优化Easy English Nano拼写运算
  • Loading branch information
tumuyan committed Jun 12, 2021
1 parent 0d38399 commit c98ad4f
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 31 deletions.
22 changes: 13 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,24 @@ Rime新手使用此方案,可以快速上手简体中文和常用英语的混

## 使用方法
* 目前本方案没有加入东风破,需要下载文件并放置到方案目录来使用。
1. [下载文件](https://github.com/tumuyan/rime-pinyin-simp/archive/master.zip)、解压文件并复制到`Rime用户文件夹`内。用户文件夹位置:
1. [下载文件](https://github.com/tumuyan/rime-pinyin-simp/archive/master.zip)、解压文件
2. 删除解压后others目录中不必要的文件。
* `others/rime.lua`是lua滤镜,如果你的其他输入方案已经预设了lua滤镜,需要手动合并此文件的内容到用户文件夹内的rime.lua文件中去。否则直接复制到`Rime用户文件夹`内即可
* `others`目录下`melt_eng_custom.dict.yaml``pinyin_simp_custom.dict.yaml` `pinyin_simp_pin.txt`分别是英文、中文用户自定义词库,由用户自己维护。如果`Rime用户文件夹`内没有这几个文件,请拷贝;如果存在,,请不要替换。
* `others`目录的其他文件仅供参考,可以直接删除。
3. 复制剩余文件到`Rime用户文件夹`内。用户文件夹位置:
* 【中州韻】 ~/.config/ibus/rime/ (0.9.1 以下版本爲 ~/.ibus/rime/)
* 【小狼毫】 %APPDATA%\Rime
* 【鼠鬚管】 ~/Library/Rime/
2. 启用 [袖珍简化字拼音][Easy English Nano] 方案。
3. 打开 Rime 方案选单(输入状态下按Ctrl + ~),切换至 [融合拼音] 即可开始使用。

4. 启用 [袖珍简化字拼音][Easy English Nano] 方案。
5. 打开 Rime 方案选单(输入状态下按Ctrl + ~),切换至 [融合拼音] 即可开始使用。

## 注意事项
* Easy English Nano方案内置了大小写转换,允许用小写字母输入拼大小写混合的单词,允许首字母大写输入全大写的单词。(也就是说,首字母大写不能输入全小写的单词)因此在维护词典时,无需手动对大小写的词条做编码优化即可得到较好的体验,词条和编码完全一致即可。
* Easy English Nano方案能够自动处理编码中的单个+-_符号。如果词条包含了其他符号或多个符号,比如空格,需要手动去除特殊符号。
* Easy English Nano方案能够自动处理编码中的单个+-_符号。如果词条包含了其他符号或多个符号,比如空格,需要手动去除码表中的特殊符号。

* Easy English Nano方案不会生成自造词(避免输入错误造成的字典污染)。作为补充,制作了自动编辑用户字典的lua滤镜输入。输入单词并使用`--`结尾时,输入的键盘码会自动保存到`melt_eng_custom.dict.yaml`中。当用户重新部署时,新的词条会生效。

* 部分单词拼写存在英式英语和美式英语的差别,以符合国内(其实是本人)拼写习惯。通过核查,多数单词实际上是美式拼写习惯,少部分为英式,也有少部分保留了两种拼写。此部分改动并未完全落实。
使用美式的有如下参考规律:

Expand All @@ -37,10 +44,6 @@ Rime新手使用此方案,可以快速上手简体中文和常用英语的混
- railway 是英式英语,railroad是美式英语,使用railway



* 输入的英语不会生成自造词(我认为这是一个好的特性,避免了输入错误造成的字典污染)


## 文件组成及授权
本方案基于多个方案和词库,并且尽量保持不对原文件修改,以便保持与上游的同步和随时调整。缺点是包含的文件总数较多。

Expand All @@ -66,6 +69,7 @@ Rime新手使用此方案,可以快速上手简体中文和常用英语的混
而github上[BlindingDark](https://github.com/BlindingDark/rime-easy-en)有在维护,使用了**LGPLv3**协议,但是与本方案分属不同分支。
* `melt_eng.dict.yaml` 英文主词库,作者tanzi,没有更多信息。在2016考研词汇大纲和六级单词的基础上进行修订。
* `melt_mult_language.dict.yaml`中英混合及其他语言的词库。
* `melt_eng_custom.dict.yaml` 用户自定义英文词库。

【融合拼音增补词库】
- `moegirl.dict.yaml`:萌娘百科词库。来源为项目[mw2fcitx](https://github.com/outloudvi/mw2fcitx/)
Expand Down
4 changes: 3 additions & 1 deletion melt_eng.dict.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@

---
name: melt_eng
version: "2021.02.17"
version: "2021.06.12"
#sort: by_weight
use_preset_vocabulary: true
import_tables:
# 英文及中英混输词库
- melt_mult_language
# 用户自定义词库
- melt_eng_custom
...
AA AA 100
Trojan Trojan 100
Expand Down
17 changes: 12 additions & 5 deletions melt_eng.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,19 @@ speller:
# 小写字母输入,匹配首字母大写的单词
# - derive/^([a-z]+)$/\u$1/
# 把大小写混写的单词转写为全小写
- derive/^([a-zA-Z]+)$/\L$1/
- derive/([a-zA-Z]+)/\L$1/
# 把大写首字母的大小写混合的单词转写为首字母大写
- derive/^([A-Z])([a-zA-Z]+)$/$1\L$2/
# 把带1个符号的大小写混写的单词转写为无符号全小写
- derive/^([a-zA-Z]+)([\-_+]*)([a-zA-Z]*)$/\L$1\L$3/
- derive/^([a-zA-Z])([a-zA-Z]*)([\-_+]*)([a-zA-Z]*)$/$1\L$2\L$4/
- derive/^([A-Z])(.+)$/$1\L$2/
# 把带1个符号的大小写混写的单词转写为无符号首字母大写
- derive/^([A-Z])([a-zA-Z]*)([\-_+]*)(.*)$/$1\L$2\L$4/
# 把带1-3个连字符的单词转写为无符号
- derive/^([a-zA-Z]+)([\-_+]*)([a-zA-Z]*)/$1$3/
- derive/^([a-zA-Z]+)([\-_+]*)([a-zA-Z]*)([\-_+]*)([a-zA-Z]*)/$1$3$5/
- derive/^([a-zA-Z]+)([\-_+]*)([a-zA-Z]*)([\-_+]*)([a-zA-Z]*)([\-_+]*)([a-zA-Z]*)/$1$3$5$7/
# 把带1-3个连字符的单词转写为无符号全小写
- derive/^([a-zA-Z]+)([\-_+]*)([a-zA-Z]*)/\L$1\L$3/
- derive/^([a-zA-Z]+)([\-_+]*)([a-zA-Z]*)([\-_+]*)([a-zA-Z]*)/\L$1\L$3\L$5/
- derive/^([a-zA-Z]+)([\-_+]*)([a-zA-Z]*)([\-_+]*)([a-zA-Z]*)([\-_+]*)([a-zA-Z]*)/\L$1\L$3\L$5\L$7/
translator:
dictionary: melt_eng
spelling_hints: 9
Expand Down
14 changes: 14 additions & 0 deletions others/melt_eng_custom.dict.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Rime dictionary
# encoding: utf-8
#
# Easy English Nano使用的英文自定义词典,
# 方案关闭了自造词,但是可以在输入字符后输入--,lua滤镜会保存键盘字符到此字典中。

---
name: melt_eng_custom
version: "2021.06.12"
#sort: by_weight
use_preset_vocabulary: true
...

NERV NERV 100
File renamed without changes.
File renamed without changes.
63 changes: 47 additions & 16 deletions others/rime.lua
Original file line number Diff line number Diff line change
@@ -1,25 +1,56 @@
function get_date(input, seg, env)
if ( input == "date") then
yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), " -"))
elseif ( input == "date-" or input == "time--") then
yield(Candidate("date", seg.start, seg._end, os.date("%m/%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y/%m/%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y.%m.%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y%m%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%B %d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), ""))
elseif ( input == "time" or input == "date---") then
yield(Candidate("time", seg.start, seg._end, os.date("%H:%M"), " -"))
yield(Candidate("time", seg.start, seg._end, os.date("%H:%M:%S"), " -"))
yield(Candidate("time", seg.start, seg._end, os.date("%H%M%S"), " -"))
elseif ( input == "time-" or input == "date--") then
yield(Candidate("date", seg.start, seg._end, os.date("%m/%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y/%m/%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y.%m.%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y%m%d%H%M%S"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%B %d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日 %H:%M"), ""))
elseif ( string.sub(input,-1) == "-") then
if ( input == "date-" or input == "time--") then
yield(Candidate("date", seg.start, seg._end, os.date("%m/%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y/%m/%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y.%m.%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y%m%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%B %d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), ""))
elseif ( input == "time-" or input == "date--") then
yield(Candidate("date", seg.start, seg._end, os.date("%m/%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y/%m/%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y.%m.%d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y%m%d%H%M%S"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%B %d %H:%M"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日 %H:%M"), ""))
else
inpu = string.gsub(input,"[-]+$","")
if (string.len(inpu) > 1) then
if ( string.sub(input,-2) == "--") then
-- file = io.open("C:\\Users\\Yazii\\AppData\\Roaming\\Rime\\pinyin_simp_pin.txt", "a")
-- user_path = (rime_api ~= nil and rime_api.get_user_data_dir ~= nil and {rime_api:get_user_data_dir()} or {'%appdata%\\Rime'})[1]
ppath = getCurrentDir() .. "melt_eng_custom.dict.yaml"
-- yield(Candidate("pin", seg.start, seg._end, ppath , ""))
file = io.open(ppath,"a")
file:write("\n" .. inpu .. "\t" .. inpu .. "\t100")
file:close()
yield(Candidate("pin", seg.start, seg._end, inpu , " 已保存"))
else
yield(Candidate("pin", seg.start, seg._end, inpu , " -保存"))
end
end
end
end
end

function getCurrentDir()
function sum(a, b)
return a + b
end
info = debug.getinfo(sum)
path = info.source
path = string.sub(path, 2, -1) -- 去掉开头的"@"
path = string.match(path, "^(.*[\\/])") -- 捕获目录路径
spacer = string.match(path,"[\\/]")
path=string.gsub(path,'[\\/]',spacer)
return path
end

0 comments on commit c98ad4f

Please sign in to comment.