用 macOS 内置中文输入法时, C-= 和 C-/ 失效, 如何解决?

如题.

emacs 版本为 emacs-mac. 除此之外我有尝试 sis, 这个包可以解决中文输入法时按 C-x , C-c 等 prefix 的问题, 但是貌似无法解决 C-= 和 C-/ 的失效问题

补: 忘了说了 C-= 是 expand-region 包的快捷键, C-/ 我自己定义成其他东西了, 所以都不对应 emacs 自带的功能. 总之问题就是, 这类快捷键在 macOS 西文输入法下有效, 但是在中文输入法下无效. 无效(失效)的意思是, 没有任何行为, 在 echo area 中也没有任何信息, 就好像啥都没按过一样. 如果我用在 macOS 中文输入法下用 describe-key C-h k C-= , 也没有任何响应, 即使按了 C-=, minibuffer 中依然在等输入

你说的失效是什么现象?是跑到输入法的候选了?

C-\ 的函数是 toggle-input-method , 只能用于切换 Emacs 内置的输入法,它是管不到 Mac 系统的输入法的。你可以使用 Karabiner 模拟按键来实现你需要的任意按键切换。

你可以试试社区大佬开发的 pyim 和 emacs-rime ,这两个可以直接用 C-\ 切换了。

那是 C-\:joy:

(push "<C-=>" sis-prefix-override-keys)
(push "<C-/>" sis-prefix-override-keys)

这样试试?

失效就是完全没有任何作用, 没有任何行为, echo area 也没有任何信息

谢谢, 试了一下没用

有时间希望能试试, 看上去貌似上手需要点时间

我在 Mac ,Linux 和 Windows 都是使用的 Emacs-rime,系统上的输入法也是用的 rime ,这样就可以使得我在任何系统以及Emacs 下的输入体验是一样的,不一样的只是UI的显示。

Emacs-rime 在 Mac 上的安装也很方便,看下官方文档就可以了。

也可以参考我的配置,在这个文章末尾

这个方案主要上手难度是要熟悉 rime 这个开源输入法。