Mac下我也想用Emacs自带的输入法输入中文,不想用系统的,但是在切换窗口的过程中经常会误打开系统中文输入法,想问一下大家有碰到过这个困扰人的问题么?咋解决的?
可以试试看这个软件
我是通过 hammerspoon 这个软件来实现,让指定的 App 在启动时默认使用英文/中文。
这是我的配置:
我用的是 Rime (鼠须管),如果是苹果自带输入法,将 “im.rime.inputmethod.Squirrel.Rime” 改为 “com.apple.inputmethod.SCIM.ITABC” 就可以了。
另外,记得打开系统设置中“自动切换到文稿的输入法”,这样切换应用时就会记住每个应用程序原来使用的输入法。
PS:如果配合 sis 这个包,系统输入法也可以在 Emacs 中很好的使用。
有没有windows下类似的解决方案?
Windows 下我使用 Rime(其实用Windows输入法也可以设置默认为英文),可以设置 Emacs 启动时默认为英文。
在 weasel.custom.yaml
中加入下面的设置:
patch:
# 以下软件默认英文模式
app_options/emacs.exe:
ascii_mode: true
通过 sis 直接就可以在 Emacs 中绑定按键(比如 f9)切换 Rime(小狼毫)的中英文状态。
在操作系统中,默认就是 Shift 切换输入法。在Emacs 中,通过 AHK 软件,将 Shift 映射为 f9, 也相当于用 Shift 切换中英文状态。
在Rime(小狼毫)的 default.custom.yaml
中设置 Shift 切换输入法:
patch:
ascii_composer: # 设置caps、shift、control等键的作用
good_old_caps_lock: true # 若为true,caps只切换大小写
switch_key:
Shift_L: commit_code
Shift_R: inline_ascii
Control_L: noop
Control_R: noop
Caps_Lock: clear
Eisu_toggle: clear
在 AHK 中映射 Shift 为 f9:
Shift::
if WinActive("ahk_class Emacs")
Send {f9}
Return
这样不管是在 Emacs 内,还是 Emacs 外,输入法的体验都统一了。
注意:需要 Emacs 28 以上才支持直接切换系统输入法的中英文状态。
给个思路,系统使用 Rime 输入法,按照楼上的方法设置,可以在 emacs 里自动禁止输入法; 在 emacs 里,使用 GitHub - DogLooksGood/emacs-rime: RIME ㄓ in Emacs 这个依赖,可以做各种配置。
二者采用 Rime 的同步方案来同步词库,除了不能实时同步词库外,算是一种比较好用的方案了。
谢谢!
改了改,加上了eventType == hs.application.watcher.activated 的处理,真香!