evil 如何根据模式不同切换不同的输入法?

现在安装居然不能加 --with-input-method 这个option了 这么改是好用,延迟基本没了

我配了应该是不行

现在在macOS下使用brew安装fcitx-remote-for-osx,似乎完全不支持–with-input-method了?!

而使用无参数的默认安装方式,即

brew install fcitx-remote-for-osx

按照以上方式安装成功了,且Emacs里即使执行了fcitx-defaut-setup也无法进行中英输入法的正常自动切换。(在System Preference-Key-Shortcut中,已经把Select next source in Input Menu设为Ctrl-Shift-Z

想实现fcitx-remote-for-osx或其它IME自动切换urility,在macOS 10.15上的Spacemacs中,对搜狗拼音的正常自动模式切换支持,希望有道友给出解决线索。

谢谢。

我之前在 Mojave 下是通过自己编译处理的,但升级 Catalina 之后切换 Squirrel 输入法有问题,于是我改用 pyim 了……

不过你可以先参考我的博客做一些尝试:fcitx-remote-for-osx 设置 Squirrel 输入法切换 。或直接像我后面那样手动编译,编译选项改成 sogou-pinyin

(再或者,pyim + rime 欢迎你……)

macOS里clone源码,然后执行 build.py build allbuild.py build '输入法' 手工编译fcitx-remote-for-osx,然后把编译生成的对应 你的输入法专用的执行文件拷贝到PATH中并且改名为fcitx-remote,就可以了。默认的fcitx-remote-general是循环切换不同输入法,如果输入法多于2个(包括英文)的话,用起来不太方便。

mac os 下,macvim 有个 :set noimdisable 的命令,可以加入vimrc配置,实现在Insert模式为中文,退出到Normal模式时自动切换为英文,再进入Insert模式时又恢复为中文。感觉很好用!同样的功能在Windows Gvim 不需要这条语句都能原生支持。 不知道这个功能在Emacs Evil mode 怎么实现? 我mac os catalina 用的是系统自带输入法,Windows 10 也是系统自带输入法。

使用input-source-switcher,按照这位老兄如何自动在 Spacemacs evil 进入命令模式时切换至英文输入法 ,刚进入emacs首次切换到中文输入法的时候,即使显示成中文输入法,但仍然会是英文输入状态,过一会就好了

这种方法虽然有蛮蛋疼,但至少还能解。。。

macOS 10.13.4 emacs 26.1 百度五笔(com.baidu.inputmethod.BaiduIM.wubi)

这个是Mac的bug,参见 GitHub - hatashiro/kawa: A macOS input source switcher with user-defined shortcuts.

:mask: 先这样凑合着用吧。。。感觉目前用着还行。。。 已经搞了个自动切换输入法的应用来在不同的应用之间切换输入法了。。。哎~

利用了 karabiner 成功了,直接 esc 切换模式并且输入法也切回abc了~

rime

放在Emacs里面就可以无缝切换了。

不管是模式还是上下文。

1 个赞

我主要是习惯了mac原生的输入法

我已经完美地解决了这个问题。

3 个赞

感谢,ok 了 稍微折腾了一小下

这个插件是不是过期了? 我在 Windows 11 + spacemacs 上面使用这个插件, 一点效果也没有!

请问是怎么实现的? 太需要了

mac系统用的。你点开他那个链接看看啊。现在软件改了,新的是karabiner-elements,装上了再按楼上的json配置就行。

抱歉,最近没有用这个,我现在用的是 sis

那段 json 已经无了.

Windows上这个方法挺好用的:

(defun emacs-ime-disable ()

(w32-set-ime-open-status nil))

(defun emacs-ime-enable ()

(w32-set-ime-open-status t))

(cond ((eq system-type 'windows-nt)

   (add-hook 'evil-insert-state-entry-hook 'emacs-ime-enable)

   (add-hook 'evil-insert-state-exit-hook 'emacs-ime-disable)
   ))