原生输入法切换: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 个赞
外部输入切换模式,是指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)不友好。
hek14
13
哦哦,
我稍微改了一点readme,github就把release搞成draft了。
已重新publish
hek14
16
我看了一下代码. 这是对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了。
hek14
19
反馈一下, 我当然是按照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时,会使用这个设置。