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

每次中文输入完退出 insertnormal 模式下, 都会遇到一个问题: insert 下保存了之后 normal 下输入了中文, 按了 ESC 键取消之后还得重新保存一次.

1 个赞

你需要的是这个 chinese-pyim

额外的输入法显得没什么必要, 如果真是这样才能解决, 只能放弃解决这个问题了.

毕竟用了这么长时间的搜狗, 个人词库都在里面.

emacs 不只是写代码, 一些笔记是用 org-mode 下面写的. 所以词库还是很重要的.

Windows Linux macOS 都可以用。

1 个赞

这个可以解决:

spacemacs/chinese layer里也有:

(chinese :variables
              chinese-enable-fcitx t
              )
2 个赞

@erStern @LdBeth 多谢, 多谢, 太有用了, 已经配置成功, 太舒服了.

自动切换输入法的时候会有个大约1秒的卡顿. 能感知到.

无论是fcitx也好,pyim也罢都是鸡肋,唯一能指望的就是evil能原生支持这一功能。 fcitx的问题在于只支持中英双输入法切换,而且回到输入模式仍然是中文输入法的英文模式。 pyim的性能、功能性和冗余就不说了。 vim,在Windows下本身就原生支持记忆输入法状态,估计是因为不同模式会被Windows识别成不同的输入框,不会混起来(瞎猜的)所以那种切换的顺滑感,期待Emacs有天能够做到

确实是这样, 刚开始用着还行, 用多了就能感觉到卡顿了, 一个卡顿思路可能就没了.

good luck.

卡顿可能是延时的问题

(defvar fcitx-prefix-keys-polling-time 0.1 "Time interval to execute prefix keys polling function.")

怎么解决呢?

mac 下我的解决方案 对这个输入法感兴趣的可以尝试下, 我使用输入squirrel (可对自定义词库,参考dotfiles/mac/rime_input_method at main · jixiuf/dotfiles · GitHub 配了个五笔拼音输入法) Releases · jixiuf/squirrel · GitHub dotfiles/emacs.lua at main · jixiuf/dotfiles · GitHub

最近试图使用fcitx-remote管理Spacemacs中的输入法自动切换,无论怎样设置fcitx-remote都没效果。希望各位道友根据我的如下折腾经历提供一下解决线索。

我的Spacemacs develope branch最近刚升级为[email protected] 我的系统时macOS 10.13.5 我的输入法是搜狗拼音

我做了如下系统安装设置

  1. 在terminal中, brew install fcitx-remote-for-osx --with-input-method=sogou-pinyin

安装成功! 本机的fcitx-remote-for-osx文件安装在如下路径 /usr/local/Cellar/fcitx-remote-for-osx/0.3.0

  1. 设置输入法切换快捷 Select next source in input menu keyboard shortcut in System Preference to Ctrl-Shift-Z

  2. 设置Spacemacs配置文件中的chinese layer变量 在 dotspacemacs-configuration-layers中加入 (chinese :variables chinese-enable-fcitx t)

  3. 启动/重启 Spacemaces

  4. 双击SPC,输入/执行命令 M-x fcitx-default-setup 这时,Spacemacs的 warning buffer出现,提示如下 Warning (fcitx.el): `fcitx-remote’ is not avaiable. Please check your fcitx installtion.

然后我尝试在Scratch buffer中,在evil的insert模式下,切换到搜狗拼音中文输入,再按下Esc返回到Normal模式,果然Spacemacs没有自动切换回英文输入,每次都要手动在中文和英文间切换。

希望大家能提供新的解决思路。

p.s. 我参考了以下相关内容

直接在命令行执行 fcitx-remote -t 是否能正常切换输入法呢?如果是在 Spacemacs 中的 terminal 呢?

另外我记得如果安装时选择了 input-method 就无需设置快捷键了,快捷键貌似是给默认的时候用的。

安装您刚才的提示,我在iTerminal下,输入fcitx-remote -t,真的可以成功地实现了,搜狗拼音输入法和美式英文之间成功切换!

但是,在我的Spacemacs [email protected] 中,还是无法激活fcitx-remote。

我只要进行 M-x fcitx-default-setup,Spacemacs就出现warning-buffer,显示 Warning (fcitx.el): `fcitx-remote’ is not avaiable. Please check your fcitx installtion.

然后还是无法使用fcitx-remote来实现自动输入法切换。

求教。:joy:

说明 fcitx-remote 没有在系统路径里,看一下环境变量的设置

我之前也搞过,mac平台有切换输入法的工具

只要把切换命令加入对应evil state的hook里就行了。

不过这两个工具都有点bug,有的时候切换了没效果,要用鼠标点一下窗口才行……具体的情况可以看issue

2 个赞

感谢提供的线索,解决了!方法如下

SPC f e e 启动 Spacemacs Develop branch的Edit evn(编辑环境变量)功能。

然后打开了Spacemacs.evn配置文件;

在其中的Path=这一行上,加入我的fcitx-remote的utility/symbolic link所在目录(usr/local/bin);

重启Spacemacs,fcitx-remote-for-osx终于开始正常工作了!!

p.s. 感觉在insert mode下,按下Esc返回normal mode时,还真是比没有开启fcitx-remote-for-osx之前,增加了一点点时延。 这个时延,还有什么方法,可以进一步优化变短吗。

1 个赞

我也想知道有没有优化的方法。不了解 macos 的情况,看Windows上 fcitx-remote 的代码非常简单,不知道还能怎么优化。