IT瞎说
首发于IT瞎说
解决rime仓颉拼音反查为繁体的问题

解决rime仓颉拼音反查为繁体的问题

和昆明IT没关系, 不过困扰我好几年的事解决了, 占地发一下:

rime 有个很强的地方: 仓颉输入的时候, 想不起来, 可以输入拼音, 能提示对应字的仓颉的输入法. 也就是能用拼音反查对应的仓颉输入码.

这样太方便学习了, 可是... 切到简体输入后, 输拼音反查时, 有时提示的是对应字的繁体字, 囧.

改配置(无效)

编辑文件

linux 在


vim /home/bigzhu/.config/fcitx/rime/cangjie5.schema.yaml

mac 在


vim /Users/bigzhu/Library/Rime/cangjie5.schema.yaml

看到有这一段


simplifier:
  tips: all  * 簡化字模式下提示對應的傳統漢字

看了对应源代码, 只接受 all 和 char 两个参数, 不知有什么区别

以为注释以后就可以, 结果反查出来的仓颉码是对应繁体字的, 字显示的是简体的. 没用嘛.

问了作者佛振, 他说因为优先支持繁体, 简体字是繁体字对应出来的, 反查时找到的其实是繁字, 所以当拼音反查同一个字有繁有简时, 只能让简体的反查那里显示对应繁字, 而且他也不准备改.

看来改配置是没法达到我想要的效果了.

改为繁体(半无效)


ctrl+`

叫出配置, 改为繁体

拼音反查时, 多翻几页, 还是能找到对应的简体字的打法的.

但这个方法太可怕了, 有时要在各种奇怪的字里找十多页, 才能看到那个简体字和它的输入码, 这时的输入码倒是对的, 是对应简体字的仓颉输入码.

看来全世界只有我有用 rime 打简体的需求了, 就这么过了好几年, 我都弄的养成了仓颉拼音混用的坏习惯

终于在昨天发现了办法

改反查字典(完美)

最近写微信公众号, 打字多了太痛苦了, 不死心, 找了 rime 的源代码下来看.


void Simplifier::PushBack(const an<Candidate>& original,
                         CandidateQueue* result, const string& simplified) {
  string tips;
  string text;
  size_t length = utf8::unchecked::distance(original->text().c_str(),
                                            original->text().c_str()
                                            + original->text().length());
  bool show_tips = (tips_level_ == kTipsChar && length == 1) || tips_level_ == kTipsAll;
  if (show_in_comment_) {
    text = original->text();
    if (show_tips) {
      tips = simplified;
      comment_formatter_.Apply(&tips);
    }
  } else {
    text = simplified;
    if (show_tips) {
      tips = original->text();
      bool modified = comment_formatter_.Apply(&tips);
      if (!modified) {
        tips = quote_left + original->text() + quote_right;
      }
    }
  }
  result->push_back(
      New<ShadowCandidate>(
          original,
          "simplified",
          text,
          tips));
}

这段就是决定反查时是显示仓颉码还是对应繁体字的, 看了才真正明白作者说的意思了.

不是改代码, 编译个自已的版本就能解决的.

原因出在反查的 luna_pinyin 输入法是全中文的, 也就是它的字典库里有所有的繁体字和简体字. 作者在输入法上做了对应转换的功能, 来实现切换繁简输入的功能.

那我弄个只有简体字的反查库, 不就搞定了?

都想自已做个库了, 结果发现了这个项目 pinyin-simp, 现成有了, 赞!

clone 下来, 放到 ~/Library/Rime 里, 加一个自已的 default.custom.yaml


patch:
  menu:
    page_size: 9
  schema_list:
  - schema: pinyin_simp
    #- schema: luna_pinyin
  - schema: cangjie5
    #- schema: luna_pinyin_fluency
    #- schema: luna_pinyin_simp
    #- schema: luna_pinyin_tw

把 pinyin_simp 加到了输入法里, 这样 rime 才会把它的 dict 文件编译成对应反查字典.

直接改了 cangjie5.schema.yaml 把反查字典由 luna_pinyin 改为 pinyin_simp


reverse_lookup:
  comment_format:
    - "xlit|abcdefghijklmnopqrstuvwxyz|日月金木水火土竹戈十大中一弓人心手口尸廿山女田難卜符|"
  dictionary: pinyin_simp
......
schema:
  author:
    - "發明人 朱邦復先生"
  dependencies:
    - pinyin_simp

重新部署!

完美!

欢迎关注公众号: 解决rime仓颉拼音反查为繁体的问题

bigzhu:「我就是在瞎说, 别让我举证」

编辑于 2017-06-30

文章被以下专栏收录