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

是的,快忍受不了spacemacs了,启动时还提示选择一下pattern(不知道哪里设置出错了)。种草了doom,等找找doom的新手入门教程,再入手。

再次感谢善心相助

@chinhant

我是从官网下载的裸spacemacs
然后只配置了smart-input-source
这样是没问题的。

  • 你是把 配置代码 放在 (defun dotspacemacs/user-config ()里的么?
  • 检查一下括号问题。是不是少了一个 右括号

(defun dotspacemacs/user-config ()

(use-package smart-input-source :config (setq smart-input-source-english-input-source “com.apple.keylayout.US”) (setq smart-input-source-other-input-source “im.rime.inputmethod.Squirrel.Rime”) (add-hook text-mode-hook #'smart-input-source-mode) (add-hook prog-mode-hook #'smart-input-source-mode) )

(setq gc-cons-threshold 100000000) ————————

应该没有少括号,可能是spacemacs其他代码冲突了?确实乱糟糟的

你是复制的么,确认下引号?感觉你用的中文

应该没错 谢谢热心

会不会是鼠须管的问题?

@chinhant

你用markdown的code fence,把原始代码贴上来。

在第一个“```”之后,可以放上语言标识,即

“```lisp”


或者,贴到 pastebin上去,https://pastebin.com/
然后把链接发上来,

(defun dotspacemacs/user-config ()


 (use-package smart-input-source
   :config
   (setq smart-input-source-english-input-source
         "com.apple.keylayout.US")
   (setq smart-input-source-other-input-source
         "im.rime.inputmethod.Squirrel.Rime")
   (add-hook text-mode-hook #'smart-input-source-mode)
   (add-hook prog-mode-hook #'smart-input-source-mode)
   )

 (setq gc-cons-threshold 100000000)

@chinhant

完整的.spacemacs文件呢? 我看看我这里能不能复现。

试试看能看到吗?确实乱糟糟的。

我试了,你这里面不能用

(use-package smart-input-source)

得用

(require 'smart-input-source)

我不知道为什么。
因为我用官方默认生成的.spacemacs里面,用use-package是没问题的。

经过以下操作:

  • disable fcitx和chinese layer

达到以下效果:

  • 需要手工启用 smart-input-source-mode。 hook没起作用。
  • 可以使用english overlay,
  • 可以<esc>退出insert模式。
  • 不会自动切换中文输入法。可能也是hook被清空了。

:sweat:居然没看出来,不过配置确实太乱了:rofl:

 (use-package smart-input-source
   :config
   (setq smart-input-source-english-input-source
         "com.apple.keylayout.US")
   (setq smart-input-source-other-input-source
         "im.rime.inputmethod.Squirrel.Rime")
   (add-hook 'text-mode-hook #'smart-input-source-mode)
   (add-hook 'prog-mode-hook #'smart-input-source-mode)
   )

难怪!!!! 所以,不是use-packagerequire的问题。

我一直以为 @chinhant 是原文拷贝的README配置。
原来不是。。。。 ~~~

手动执行(smart-input-source-do)会自动切换中文输入法。
而且 evil-insert-state-entry-hook 里面也有这个函数

但是,不知道为什么,
从normal模式,进入insert模式时,
实际上并没有自动切换。

(找到原因了,因为 @chinhant 设置了用evil的hybrid模式,不是vim模式)

抱歉,抱歉,抄錯了,改了之后不提示錯誤了。

东抄西抄,不求甚解,就變成這樣了。

找個時間好好規整一下,或者換doom。

@chinhant

到进入enter模式不自动启用的原因了,因为是hybrid模式。
这个模式不理那些hook。
如果是vim模式,那就会自动启动了。

   ;; One of `vim', `emacs' or `hybrid'.
   ;; `hybrid' is like `vim' except that `insert state' is replaced by the
   ;; `hybrid state' with `emacs' key bindings. The value can also be a list
   ;; with `:variables' keyword (similar to layers). Check the editing styles
   ;; section of the documentation for details on available variables.
   ;; (default 'vim)
   dotspacemacs-editing-style 'hybrid
1 个赞

謝謝,能用了,謝謝鼓勵。

汉字后面跟空格触发 inline english 区域,如果输入英文后回车,会回到中文输入模式,但是如果是以下情况,不会回到中文输入模式:

  1. 删除空格,回到最后一个中文:例如错误输入空格
  2. 没有输入英文,直接回车: 例如输入 我想 *加粗* 中文字体
  3. 输入多个 空格后回车

这是规则的设计么?我觉得情况1和情况2退出inline english,回到中文,这样是不是更合适?

@yuchen-lea

谢谢指出这些edge case.
并不是有意这么设计的,
只是并没有考虑这么细。

等我改进,改完在帖子里说一下~~

@yuchen-lea

第一种情况,已经修正。
blank