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

搞定了。因为ubuntu默认的emacs不支持use module

最近在使用的时候遇到输入卡顿的问题,在此请教一下大家。

当输入的中文文本较多时,会出现明显的卡顿: input_delay

而当前展示的段落没有太多文字时,不会有次现象: no_delay

下面是卡顿时的 Profile 结果:

我使用的字体是:Sarasa Mono SC Nerd, 示例的 org mode下开启的minor mode包括:

请问有遇到相同问题的同学吗?如何解决呢? 先谢谢大家

--------------------------------------------------Update--------------------------------------------------------------

通过如下修改使用 minibuffer 显示备选词条后要好一些了:

(rime-show-candidate 'minibuffer)

但是输入依然不是特别流畅,无法达到与系统输入法一致的输入体验。

2 个赞

提供个内置的解决方案,按 M-e 进入编辑模式

doom 下的性能问题很玄学,我暂时没有好办法。

我遇到这种情况了, 巨卡无比.

求助作者,最近更新后遇到了奇怪的问题,先贴配置文件:

(use-package! rime
  :custom
  (default-input-method "rime")
  (rime-show-candidate 'posframe)
  (rime-posframe-style 'vertical)
  (rime-user-data-dir "~/.doom.d/rime")
  )

rime-user-data-dir下主要的文件,default.custom.yaml

patch:
  schema_list:
    - schema: luna_pinyin_simp

  "menu/page_size": 7

luna_pinyin_simp.custom.yaml下只有一些模糊音设置,就不贴了。

我发现的问题是,当我输入单个汉字时,输出是正常的:

图片

然而一旦输入词组时,就会变成繁体

图片

请问是哪里设置出了问题?

另,由于对rime不是很熟悉,我想知道一般来说使用rime输入简体汉字的话,是不是一般还是采用luna_pinyin,但配置让它输出简体,还是说直接用luna_pinyin_simp就好?

用 luna_pinyin_simp ,luna_pinyin 的码表是繁体的,简体输出靠的是内置的 opencc 的转换。rime 的繁简转换一直不是太精确,直接用 luna_pinyin_simp 比较好,除非你是繁体用户,只是偶尔需要输出简体。

p.s. 这是我之前对 rime 的认识,最近有没有变化不太确定,一切以官方为主 :rofl:

2 个赞

谢谢 那我这单字简体词组繁体是啥毛病……

抱歉打扰,破案了。顺带记录一下排查问题的过程。

先是怀疑emacs-rime的问题,然后发现emacs-rime插件的上次更新时间在20天前,显然不是它引起的问题,时间节点对不上;然后又看了librime,发现也是类似的问题。由于我日常用的是Debian sid,可能软件比较新,那怀疑对象就比较多了,索性从零开始看看干净的配置有没有问题。

重新起了一个WSL,装了Ubuntu 20.04LTS,然后下载emacs27源码编译,装上doom emacs以及我自己的配置,以及一系列依赖一顿装,然后发现:Ubuntu 20.04LTS下的emacs,emacs-rime输入法没毛病?

然后回到我日常用的Debian sid上,emacs-rime输入中文的问题依旧,但sudo apt update && sudo apt full-ugprade -y 更新之后问题又消失了?

然后一看更新记录,libopencc赫然在列,得,原来是简繁转换的部件出了问题。

感叹一下,自己抓问题的方法论和经验还是太缺了,这么小小一个问题昨天折腾到凌晨三点,还是得学习一个啊!

1 个赞

我去看了下官方的 scheme,发现我说错了,看起来他用的应该是内部的转换机制,luna_pinyin_simp ,luna_pinyin 用的码表是一样的 … 如果你还是用起来怪怪的,那你可以去网上找找有没有其他的码表可以用(这应该蛮多的)

這個說法似乎是錯誤的?

  • 我實驗不同 installation 的 *.userdb.txt 會被同步
  • 如果使用同一個 installation-id,那麼詞庫之外的配置不就互相覆蓋了麼?不可能這麼設計吧。

https://scomper.me/gtd/shu-xu-guan-ci-ku-de-tong-bu-he-bei-fen-@vgow 这篇文章应该挺清楚的,可以参考下

1 个赞

想问一下各位大神,我在wsl中使用emacs-rime,发现延迟比较严重, 我是使用VcXsrv 连接到WSL里的xserver,发现

  1. 默认英文没有延迟
  2. 开启emacs-rime 输入中文感觉有延迟
  3. 开启emacs-rime,使用rime-inline-ascii 后输入英文,延迟非常严重 想问一下该如何排查呢?

請問如何刪除錯誤的上屏詞,我按如下配置了 S-<delete>, 但按的时候提示 rime-send-keybinding: Can’t send this keybinding to librime

(setq rime-translate-keybindings
      '("C-`" "S-<delete>" "C-f" "C-b" "C-n" "C-p" "C-g" "<left>" "<right>" "<up>" "<down>" "<prior>" "<next>" "<delete>")) 

先从相对干净的配置入手?我有在 wsl 上用过,感觉挺流程的,所以需要更多信息。

1 个赞

1, 并非所有按键都可以发送。2,我觉得就算发送了也做不到删上屏的词。

是 librime 的限制?好吧,是个遗憾。

感谢狗哥,经过排查,基本可以断定问题出在这个函数上,注释掉就正常了

(defun rime-evil-escape-advice (orig-fun key)
  "advice for `rime-input-method' to make it work together with `evil-escape'.
	Mainly modified from `evil-escape-pre-command-hook'"
  (if rime--preedit-overlay
      ;; if `rime--preedit-overlay' is non-nil, then we are editing something, do not abort
      (apply orig-fun (list key))
    (when (featurep 'evil-escape)
      (let* (
	     (fkey (elt evil-escape-key-sequence 0))
	     (skey (elt evil-escape-key-sequence 1))
	     (evt (read-event nil nil evil-escape-delay))
	     )
	(cond
	 ((and (characterp evt)
	       (or (and (char-equal key fkey) (char-equal evt skey))
		   (and evil-escape-unordered-key-sequence
			(char-equal key skey) (char-equal evt fkey))))
	  (evil-repeat-stop)
	  (evil-normal-state))
	 ((null evt) (apply orig-fun (list key)))
	 (t
	  (apply orig-fun (list key))
	  (if (numberp evt)
	      (apply orig-fun (list evt))
	    (setq unread-command-events (append unread-command-events (list evt))))))))))

(advice-add 'rime-input-method :around #'rime-evil-escape-advice)

这个函数是可以在开启rime的状态下按 “jk” 直接从evil的insert-state切换到normal-state

1 个赞

"<S-delete>" 这样写应该可以

也不行诶(同样输出Can’t send this keybinding to librime,mac平台,librime 1.7.1),你那里可以吗?