(重新设计)中英文混打:OS输入法管理包 smart-input-source

Rime的问题吧,没实现windows的部分ime api,所以在windows中,用自带输入法和emacs的配合感觉比较好。在macOS中,我是直接关闭Rime的中英文切换,英文直接切换为系统输入法,中文才用Rime。

我之前尝试切换到Windows自带的拼音输入法,最后还是回到了 Rime。因为 Rime 用了很长的时间,有了一定的个人词库后很好用。系统输入法不方便和其他平台共享个人词库。我主要使用 macOS 和 Windows 系统,偶然会使用 Arch Linux。

另外请教下 Rime 切换输入法中英文状态时在光标下提示的 “A” 或 “中” 图标能禁用吗?因为在 Emacs 中自动切换时也会提示,很烦人。

PS: 找到了,Rime 如果要保留 Shift的话是没法去掉 “A” / ”中“图标提示的。要么自己拉源代码注释相关功能重新编译。

1 个赞

@goumao 大佬,开启 sis-global-inline-mode 后默认会删除英文两边的空格。想请教下能否设置不要自动删除两边的空格?

我知道中文后面输入2个空格可以实现,但不希望输入那么多空格。

之前一直用 emacs-rime,我已经习惯了中英文之间有一个空格分割,而且如果连在一起的话,flyspell 也没法检查英文的语法,会将中文和英文连在一起。

当然可以啊。README上有。

sis功能太复杂,可能要把更多的常见问题整理到FAQ里面更好。

1 个赞

1 个赞

多谢,用下面的设置后,不会删除空格了。

  (setq sis-inline-tighten-head-rule 0)
  (setq sis-inline-tighten-tail-rule 0)
(add-to-list 'sis-context-detectors (lambda ()
                                      (when (and (eq major-mode 'org-mode) (org-at-heading-p)) 
                                      'other)))

比如我希望进入在orgmode 且光标在org 的heading 位置是进入中文,像上面的写法有什么问题吗?

lambda (&rest _)

感谢您的帮助

sis 在dashboard下prefix 切换快捷键失效 例如 C-c活 C-x ,但是 esc不受影响,可以切换英文

我应该从什么思路去查

测试成功了?

不知道啥dashboard啊。 是哪个包?

对,测试成功了,就是参数的原因,我的elisp能力还是差很多

1 个赞

考虑到您没有使用dashboard,我尝试从别的方向解决一下

请问您prefix键例如 C-x 或者C-c 能触发sis-set-english 的原理是什么,我怀疑在这里dashboard发生了冲突

已经解决, 但是大佬,您不能从源码级别做些更改吗,就算是给个选项让我们配置哪里可以prefix触发也好啊

你的问题也许已经解决了。

这两天入坑了 sis ,在 @aqua0210 帮助(感谢)以及自己的摸索下,把 sis 在 Linux 上用起来了,供大家参考:

1 个赞

默认提供的 sis-context-detectors 不是很符合我个人的需求,我希望的用法是:

  • 在输入中文的过程中,如果输入了一个空格或者英文字符,那么就切换到 english input source
  • 在输入英文的过程中,需要有机制能够切换回"英文"(输错了?应该是"中文"?)。

sis-global-inline-mode 这个不知道是啥功能,暂时不使用

这个inline-mode就是完成你上面想要的功能, 而且比你简单配置得来的要强多了。

readme的下面这两个部分最好读一下, 以弄懂inline-mode的行为,及如何定制。

谢谢,是写错了。

README 有看过,这个图和这些变量还是没明白怎么用,不过我目前的方法也够用了,就没有继续深究了。

感谢写了这个包。