About:在emacs中输入中文时,sis
可以减少手工切换。
在坛友的不断使用反馈下,sis
特性和用户接口已稳定。
原帖因为过程中变动太大,甚至包名称都更改过,如今已没有参考价值。
因此,新开一贴,期望作为一个具有参考价值的知识库。
About:在emacs中输入中文时,sis
可以减少手工切换。
在坛友的不断使用反馈下,sis
特性和用户接口已稳定。
原帖因为过程中变动太大,甚至包名称都更改过,如今已没有参考价值。
因此,新开一贴,期望作为一个具有参考价值的知识库。
win7 + emacs 26.3 (原生非evil),使用非常方便,再次感谢大佬
可惜github只能打一颗星
配置如下:
(use-package sis
:init
;; `C-s/r' 默认优先使用英文 必须在 sis-global-respect-mode 前配置
(setq sis-respect-go-english-triggers
(list 'isearch-forward 'isearch-backward) ; isearch-forward 命令时默认进入en
sis-respect-restore-triggers
(list 'isearch-exit 'isearch-abort)) ; isearch-forward 恢复, isearch-exit `<Enter>', isearch-abor `C-g'
:config
(sis-ism-lazyman-config "1033" "2052" 'im-select) ; 输入码 1033/英文,2052/中文小狼毫
;; enable the /cursor color/ mode 中英文光标颜色模式
(sis-global-cursor-color-mode t)
;; enable the /respect/ mode buffer 输入法状态记忆模式
(sis-global-respect-mode t)
;; enable the /follow context/ mode for all buffers
(sis-global-follow-context-mode t)
;; enable the /inline english/ mode for all buffers
(sis-global-inline-mode t) ; 中文输入法状态下,中文后<spc>自动切换英文,结束后自动切回中文
;; (global-set-key (kbd "<f9>") 'sis-log-mode) ; 开启日志
;; 特殊定制
(setq sis-default-cursor-color "green yellow" ; 英文光标色
sis-other-cursor-color "#FF2121" ; 中文光标色
;; sis-inline-tighten-head-rule 'all ; 删除头部空格,默认1,删除一个空格,1/0/'all
sis-inline-tighten-tail-rule 'all ; 删除尾部空格,默认1,删除一个空格,1/0/'all
sis-inline-with-english t ; 默认是t, 中文context下输入<spc>进入内联英文
sis-inline-with-other t) ; 默认是nil,而且prog-mode不建议开启, 英文context下输入<spc><spc>进行内联中文
;; 特殊buffer禁用sis前缀,使用Emacs原生快捷键 setqsis-prefix-override-buffer-disable-predicates
(setq sis-prefix-override-buffer-disable-predicates
(list 'minibufferp
(lambda (buffer) ; magit revision magit的keymap是基于text property的,优先级比sis更高。进入 magit 后,disable sis的映射
(sis--string-match-p "^magit-revision:" (buffer-name buffer)))
(lambda (buffer) ; special buffer,所有*打头的buffer,但是不包括*Scratch* *New, *About GNU等buffer
(and (sis--string-match-p "^\*" (buffer-name buffer))
(not (sis--string-match-p "^\*About GNU Emacs" (buffer-name buffer))) ; *About GNU Emacs" 仍可使用 C-h/C-x/C-c 前缀
(not (sis--string-match-p "^\*New" (buffer-name buffer)))
(not (sis--string-match-p "^\*Scratch" (buffer-name buffer))))))) ; *Scratch* 仍可使用 C-h/C-x/C-c 前缀
)
感谢大佬的配置,及时雨…
请教下1033和2052这两个数字是固定的吗?我安装了不会切换输入法。DOOM+evil
配置就使用你的这个
如果功能稳定了,最好再维护一份中文文档。。。。
我手动执行了这两个函数,切换到中文输入法成功,切回english不起作用。
(sis--set-other)
(sis--set-english)
Windows应该是固定的,你可以使用 git-bash.exe 来测试 ,切换输入法,后使用 im-select.exe 命令测试
The im-select.exe is command line program, but it can’t work in cmd or powershell. It’s microsoft’s fault, the keyboard API doesn’t support in cmd and powershell. I recommend you git-bash.
Note: The git-bash is not required. It’s only used to get current input method key, which needed in VSCodeVim’s configuration.
Windows 系统下只能保留一个英文和一个中文输入法,不能再多。
多谢,这两个函数正常了。我这不是1033,是2057
(sis-ism-lazyman-config "2057" "2052" 'im-select)
我用的是Cygwin64
建议那个类似输入法状态转换图能配点文字说明,直接看图不是太明白。图上有些文字是不是选定的
同感,我看了几次那个图都没看懂。
我建议直接上视频或者动图,这样更直接更简单,理解起来更容易。
在Evil insert模式下,按M-f,M-b移动光标时,反馈不是太及时,按键后大概要0.5秒左右才会移动。另一台机器没装sis,没有这一问题。Profile了下,没看出哪的问题,就这样用吧。很好的package,不用换输入法就能流畅地用evil啦,谢谢。
晕了,我另一台window 7机器上, im-select中英文输入法输出的数字都是一样的。
我在windows上试了下用im-select.exe
切换日语输入法和英语。
切换可以正常工作,但是日语(全角状态,日语输入状态)–> 英语 --> 日语切换后,
日语输入法变为半角输入状态(英语输入状态),能让切换回日语后还保持日语输入状态吗?
谁有这方面的经验?
报个bug
这个bug很奇怪. 和evil-mode有联动. 可能单独使用两者, 都不会出现这个问题.
sis的配置:
(use-package sis
:ensure nil ; sis.el 存放在site-lisp
:hook (evil-local-mode . sis-global-respect-mode)
:config
; windows平台需要命令行程序im-select 1033 英文2052 中文
; lazyman-config语句应在第一行
(if *is-windows* (sis-ism-lazyman-config "1033" "2052" 'im-select))
(if *is-linux* (sis-ism-lazyman-config nil "pyim" 'native))
(sis-global-respect-mode t)
;; (sis-global-inline-mode t)
;; (sis-global-follow-context-mode t)
(sis-global-cursor-color-mode t)
)
一开始注释掉 evil的配置, 不会出问题, 以为是 evil 的 bug. 后来写 issues 时, 单独加载了 evil , 没有问题.
一个个测试, 发现 evil 和 sis 同时加载时, 会有这个问题.
启动emacs后, M-x sis-global-respect-mode
临时关掉 sis-global-respect-mode , 打开 outline-minor-mode
, 快捷键显示正常:
再 M-x sis-global-respect-mode
打开 sis-global-respect-mode , 快捷键就不显示了:
这个不是bug,是预期的行为。
因为C-c和C-x被respect-mode截取了。
(这个叫prefix key,sis支持用户自己配置)
快捷键还是能调用相关的功能
但是,
respect-mode会先拿过去做一些预处理:
比如:你在中文状态下C-c b a,
如果没有respect mode
那么输入法会输入ba的汉字,让你选。
但repsect mode会在你C-c之后,
自动切到英文输入法,
完了再调用原本的C-c快捷键。
原来如此。那为什么有的菜单,还是有部分快捷键能显示出来,不受respect-mode 影响呢?比如 C-c C-r