原生输入法切换:smart-input-source ,配合evil使用更佳。

原生输入法切换:smart-input-source ,配合evil使用更佳。 inline english region 借鉴了 emacs-rime 的使用方式。

1. 使用操作系统的输入法,不改变使用习惯。
2. 支持 GUI Emacs, 也支持 Terminal Emacs.
3. 安装配置简单, GUI Emacs Mac Port 下使用搜狗拼音免配置。
4. 如果在 Evil 下:
    1) 从 insert 模式离开时,自动切换到英文输入法。
    2)进入 insert 模式时, 根据上下文自动切换输入法。
5. 支持 inline english 区域:
    1) 汉字后面跟空格触发 inline english 区域。
    2) 在 inline english 下,一直使用英文输入法。
    3) 光标离开区域,或者回车,关闭 inline english 区域。
6. 输入法自动切换规则经过仔细设计:
    1) 编辑英文时,永远不会自动切换到中文输入法
    2) 输入法的切换除了考虑到前后字符,还考虑了换行。
    3) 根据上下文切换输入法的主要规则:
        - 输入法尽量和上下文一致。
        - 除了换行,纯中文之间不应该有空格。
        - 中英文混排时,中英文之间用空格隔开。

8 个赞

好东西,赞!我想请教如何强制输入中文或英文?

是怎么做到让外部输入切换模式的呢

  1. mode要在文件中启用,才会起作用。当然你也可以关掉mode。
  2. 即使mode打开了,文件中没有中文的话,也永远不会自动开启中文输入法。
  3. 它只是减少你的输入法切换,你自己可以通过操作系统切回来的。
1 个赞

外部输入切换模式,是指terminal的emacs,是如何做到的么? 我写了个外置工具macism GitHub - laishulu/macism: Command line MacOS Input Source Manager ,专门切换mac下的输入法的。 其它操作系统,参见 README 中的 Use other input source manager

3 个赞
(define-namespace smart-input-source-

namespace这个包有继续维护吗,没有的话就不建议使用了。。。。。

我查了下,github上最后一次更新是:21 Mar 2018。 一直用它啊,为什么不建议使用了呢?

支持一下。

记录了英文的位置之后光标过去的时候可以继续英文?

你说的是inline english region么? 会记录最后一个region的位置, 然后同一行region之后才会考虑自动切换到中文。 中文<space>REGION<space>^<line end> : 光标在行尾也会自动切换到中文, 而一般情况下 ENGLISH <Space>是不会自动切换到中文的。 这个mode设计的理念是,可以默认打开,不会影响编辑英文。

如果已经没人维护了,遇到问题就只能自己折腾,时间长了就会厌烦。。。

这个库功能很单一,没遇到过什么问题。 只是用它里面定义的函数add-hook时最好用全名, 而不是用除掉namespace的简名。

@tumashu 有替代库推荐么? 这个库,对一些辅助工具(比如linter)不友好。

请问一下, GitHub - laishulu/macism: Command line MacOS Input Source Manager 为什么没有release的包了?

不知道啊,我从来没用过类似的东西

哦哦, 我稍微改了一点readme,github就把release搞成draft了。 已重新publish

我看了一下代码. 这是对emacs-mac 内置的 mac-input-source 的一个扩展是吧?

如果不是通过emacs-mac安装的emacs就没法用:

mac-input-source 这个函数没有.

@hek14 这样的,如果不是emacs mac port (EMP), 或者是EMP,但是你在terminal下使用, mac-input-source这些函数都是不可用的。

在macos下,我写了个小工具 macism

你用原生的emacs,或者emacs-plus 或者terminal EMP,都是没问题的。

但是,要注意的是,iterm2.app 和 Terminal.app 都没问题, 使用体验跟GUI EMP没任何区别。 但是alacritty对任何系统输入法都存在兼容问题,

虽然本软件包的自动切换没问题, 但是输入法本身使用起来有问题。

Linux/windows下,如果有类似的工具, 配置一下就可以用smart-input-source了。

GitHub - laishulu/emacs-smart-input-source: Less manual switch for native or OS input source (input method). 的install部分。

反馈一下, 我当然是按照readme安装了macism的, 并且配置了smart-input-source-external-ism这个变量. 然后发现仍然无法自动切换输入法

并且配置了 smart-input-source-external-ism 这个变量.

如果macism在$PATH下,比如说你是brew安装的, 是不需要做任何配置的,这个变量也不需要设置。 包中默认值就是macism,如下: (defvar external-ism "macism" "Path of external ism.") 在检测到非GUI EMP时,会使用这个设置。