(重新设计)中英文混打:OS输入法管理包 smart-input-source

五笔呀 最近大佬们的积极性都很高涨啊 这个包真的很好用 :+1: :+1: :+1:

哈哈,win10里,有谁配置好的啊,让我抄抄。

已经找到办法了~~~ 但是工作量还是有一些的,不是三两下就能搞定。

:+1: :+1: :+1: 除了赞叹我还能说什么呢,期待ing. 尽管现在已经很非常好用了

大佬,我今天更新了下包。在win10系统中,可以切换输入法到中文输入法,但是离开insert模式时不能切换回英文输入法。是需要重新配置什么吗?没更新前都是可以用的。

@Jousimies

之前的版本,是不是很早之前的?
因为改动太大,才开了这个新帖子的
这块的功能,现在是一个新的mode,见下面的截屏:

你去看下README的Usage部分,更新了。

OP的tab好漂亮,是怎么实现的?

@casouri

highlight-indent-guides

doom内置了。

啊,我是说标签的那个tab

centaur-tabs

doom也内置了。

1 个赞

我尝试配置了一下 smart-input-source, 可能是我设置的问题,但是并没有达到替换 emacs-rime 包的目的。

我用 emacs-rime 的目的主要有:

  1. 我会通过 toggle-input-method 命令手动在某个Buffer切换中文输入法,emacs-rime会自动记住每个Buffer输入法的Local状态
  2. emacs-rime 只是传回Rime的后选词数据,但是不会吃掉我的快捷键,这样即使我在激活中文输入法的buffer中,可以随时按 Ctrl + x o 切换到其他Window中,smart-input-source 做不到这一点,因为一旦激活系统输入法后,系统输入法(比如Fcitx5)就会吃掉我的 Ctrl + x o 这个快捷键,导致我必须先禁用输入法才能切换到其他窗口,在这个前提下当前Buffer会被我变成禁用状态,导致下次写中文时又要重新激活一次输入法

我一直一来用pyim和emacs-rime的目的简单来说就是:它们可以在保持每个Buffer输入状态的前提下,在不输入中文的时候不吃我的Emacs快捷键。

如果 smart-input-source 可以做到上面这一点,我愿意继续尝试,因为我最近配置了Fcitx5+肥猫百万维基词库,输入体验要比RIME好很多。

也许是我配置 smart-input-source 的问题。

smart-input-source 最近在密集开发,这个功能已经加进来了。

我已经找到办法了,这几天就会实现。

等开发差不多之后,我会试着把emacs-rime作为input source,
二者配合,更为强大。

这个应该是解决了。
请测试,有问题请反馈

!!! 最新版本,打破了配置的兼容性!

对照readme的usage部分,1分钟就能改完,主要有两点:

  1. 一些变量和mode的命名:把名字中冗余的-input-source删掉,毕竟package本身叫smart-input-source已经含了-input-source.
  2. remember那个mode改名成preserve,而且从buffer local改成global的了。

其实,我觉得做到三点就足够了:

  1. 配置好 smart-input-source 后,用户可以通过 toggle-input-method 命令手动切换输入法状态
  2. 自动记住Buffer的输入法local状态
  3. 激活输入法,但是不输入中文时,用户可以使用任何Emacs快捷键而不被输入法吃掉

这三个核心功能实现,既能利用系统默认输入法,又能实现pyim/emacs-rime这些包的优点。

现在的问题不是 emacs-rime 作为input source这个问题,如果不解决上面这三个问题,实际的体验还是没有 emacs-rime 方便。

2 个赞

1可以加,现成的,几分钟就可以加进来。
2和3前面昨天有个坛友也提出来了,
然后最新版中,2已经实现了。
3正在实现中,过两天应该就能好了。

赞,期待。

还有个建议,建议直接把常用输入法框架做成内置的,比如fcitx, fcitx5, ibus, im-select都默认写好,用户只用设置一个框架字符串即可,做到用户只用 require 和选择输入法框架两行配置,傻瓜化配置,降低安装使用门槛。

1 个赞

这个主意好。

而且已经在readme中, 拷贝到代码中包一下就好了。

试了下完全不正常使用了 ? 也不知道是不是melpa没更新,我emacs 最新版本是 20200618.1540 melpa官网上最新是这版 20200618.1840,用的本论坛的elpa源 smart-input-source 20200618.1540 installed Switch OS native input source smartly

(use-package smart-input-source
  :config
  (setq smart-input-source-external-ism "im-select.exe") ; for windows 命令行切换输入法工具
  (setq smart-input-source-english-input-source "1033")
  (setq-default smart-input-source-other-input-source "2052")

  (smart-input-source-global-auto-english-mode t)  
  (smart-input-source-global-preserve-mode t)

  (dolist (hook '(text-mode-hook prog-mode-hook org-mode-hook))
    (add-hook hook #'smart-input-source-follow-context-mode))

  (dolist (hook '(text-mode-hook prog-mode-hook org-mode-hook))
    (add-hook hook #'smart-input-source-inline-english-mode))
)

请看我前几条帖子, 见下面的截屏。

另外,
刚才还有别的修正,肯定还没有反应到melpa上,
所以在现在的密集开发期,最好是用git版本。

你的配置中,这两条要改成:

  (setq smart-input-source-english "1033")
  (setq-default smart-input-source-other "2052")