欢迎尝试 emacs-rime,计划中功能已全部完成。

多谢,就是你说的这个。现在Rime自己的共享方案也是手动同步,我一般是一天更新一次,这样下班回家换电脑了还可以用上最新的个人词库。

有个严重的BUG望大家知晓,正在修复中。。


已修复

在 emacs 里,没什么不能的。

  :hook
  ('kill-emacs . (lambda ()
                   (when (fboundp 'rime-lib-sync-user-data)
                     (ignore-errors (rime-sync)))))
1 个赞

你们都是使用 Dropbox ?

想了解下 emacs-rime 的内存占用和流畅度情况如何啊?

内存的话我激活输入法会从 94M -> 123M 增加 30M的样子。 不过实际上激活输入法也就激活了所有的方案,我这里面因为测试需要有 星空两笔单字,五笔,地球拼音,仓颉5 这些词库。

速度的话我觉得是很流畅的,如果是posframe或minibuffer做候选的话。 但不知道用什么指标来描述。

感觉流畅不流畅,那要看你手指拨楞的速度怎么样 :rofl:

高桥名人 编辑 讨论 

高桥名人,电玩界有名的明星。本名高桥利幸,在还没有所谓的连发摇杆时代,以每秒钟能手指连按16下按键被称为“16连射”名噪一时,奉为当时电玩第一高手。1986年漫画家河合一庆也帮高桥名人绘制了一套六本的漫画“高桥名人物语”,算是当时流行电玩漫画的佼佼者。

哈哈,俺只是正常手速

emacs-rime 写了几个断言,自动切换中英文的,贴出来看有没有人需要

(里面有一个 defadvice!doom-emacs 用的,其它配置要修改成 advice-add

;;; cnsunyour/chinese/+rime-probe-english.el -*- lexical-binding: t; -*-

(defvar +rime-input-key 0
  "保存最后一个输入 key 值的变量。")

(unless (fboundp 'rime-input-method)
  (error "Function `rime-input-method' is not available."))

(defadvice! +get-key--rime-input-method-a (key)
  "在执行 `rime-input-method' 之前获取 key 值。"
  :before #'rime-input-method
  (setq +rime-input-key key))

(defun +rime--punctuation-line-begin-p ()
  "判断当前光标是否在行首且输入字符为符号。"
  (and (<= (point) (save-excursion (back-to-indentation) (point)))
       (or (and (<= #x21 +rime-input-key) (<= +rime-input-key #x2f))
           (and (<= #x3a +rime-input-key) (<= +rime-input-key #x40))
           (and (<= #x5b +rime-input-key) (<= +rime-input-key #x60))
           (and (<= #x7b +rime-input-key) (<= +rime-input-key #x7f)))))

(defun +rime--probe-dynamic-english ()
  "判断当前光标位置前一个字符是否为英文、数字或字符。"
  (looking-back "[a-zA-Z][0-9\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]*" 1))

(defun +rime--probe-auto-english ()
  "使用下面的规则自动切换中英文输入:
    1. 当前字符为英文字符(不包括空格)时,输入下一个字符为英文字符
    2. 当前字符为中文字符或输入字符为行首字符时,输入的字符为中文字符
    3. 以空格为界,自动切换中文和英文字符
即,形如 `我使用 emacs 编辑此函数' 的句子全程自动切换中英输入"
  (if (> (point) (save-excursion (back-to-indentation) (point)))
      (if (looking-back " +" 1)
          (looking-back "\\cc +" 2)
        (not (looking-back "\\cc" 1)))))

(defun +rime--beancount-p ()
  "当前为`beancount-mode',且光标在注释或字符串当中。"
  (when (derived-mode-p 'beancount-mode)
    (not (or (nth 3 (syntax-ppss))
             (nth 4 (syntax-ppss))))))

(defun +rime--evil-mode-p ()
  "检测当前是否在 `evil' 模式下。"
  (or (evil-normal-state-p)
      (evil-visual-state-p)
      (evil-motion-state-p)
      (evil-operator-state-p)))

(defun +rime--english-prober()
  "自定义英文输入探针函数,用于在不同mode下使用不同的探针列表"
  (if (derived-mode-p 'telega-chat-mode
                      'text-mode)
      (+rime--probe-auto-english)
    (or (+rime--probe-dynamic-english)
        (rime--prog-in-code-p)
        (+rime--beancount-p))))

(setq rime-disable-predicates '((lambda () (button-at (point)))
                                +rime--evil-mode-p
                                +rime--punctuation-line-begin-p
                                +rime--english-prober))
7 个赞

我试过Dropbox,感觉不好用。现在直接用iCloud, 还不错。 Windows 和Mac系统共享方便,org app 用的是beorg,因为它支持iCloud。

可能就是Linux上要共享iCloud 有点麻烦,还没去弄,不过应该是可以实现的。

可以整理一下开一个PR

刚写完,用两天试试,有用好用的话就提 PR

我在不同系统同步RIME词库.userdb.txt用的是坚果云,以前叫坚果铺子,aur上直接就有包叫nutstore。输入方案schema文件用git管理。

学习了。。。

switch

添加了一个自动激活 inline ascii 模式的功能。

这是一个用空格来切换的效果。

2 个赞

配置了段相对复杂点的断言,可以连续输入下面的例子,全程只用空格和回车上屏:

😃 测试中英文切换 test test test “包括标点符号” /include punctuations/ 效果相当完美!!! "Yes, it's so cool!" 测试完毕。请给小花,谢谢。 Thanks a lot!🎴

https://github.com/cnsunyour/.doom.d/blob/develop/modules/cnsunyour/chinese/%2Brime-probe-english.el

3 个赞

哈哈,在emacs里面也能这么顺滑使用五笔了,爽。。。

刚刚用了一下,非常的流畅,UI用色也不错,提一下意见哈:

  1. 怎么默认试用简体?
  2. posframe的face有哪些?文档可以写一下,想把字体调大一点

中草了,准备从pyim切换过来。

1 个赞

方案和简繁体设置在系统 rime 里。我猜测你 emacs-rime 默认是用的 rime 本身的“共享目录”,可以把 rime 的“用户目录”设到 rime-share-data-dir 里,直接应用 rime 的设置,可以保持和系统 rime 几乎一样的输入体验。