对的,就是到了第六步 是英文。
这样回来是中文输入法吗?
在输入b的时候,是什么输入法?
现在有了颜色,观察挺明显的。 按了C-x 前缀以后,当前buffer的输入法就变成英文了。 当执行C-g 取消命令的话,会正常恢复到中文输入法。
更新:
我的ESC 没法取消命令,所以没法尝试,难道是因为ESC的问题?
因为C-x 连着ESC ESC 会组成别的命令。
我这里测试也不正常 到第6步时就又变回英文状态了, 基本上就是完全不会记录buffer输入法状态了
, 我没有用 evil
你们两人都是不用evil的吧?
我这里用evil,可能这就是问题。
我自己再考虑一下。
不过我上面的操作,其实没用到evil
所有有点奇怪。
应该就是这个问题了,我们都是Emacs正常模式,估计是操作上的次数不一样。 只恢复到了上一次的被C-x改变的英文输入法。
上面我测试的都是在windows上的。 在Mac OS上的行为还有点不一样,C-x后按C-g 取消命令,并不会恢复中文。
我把evil从配置里删掉了,还是正常的。
你们的emacs版本是什么呢?
我是 26.3
跟版本估计没有关系,我26.3 和 28.0.50 都试过,问题还是存在,Windows 系统。
mac 我没装26.3 没法测试。
windows 26.1. 26.3 都一样
- A buffer 中文
- B buffer英文
A buffer 里 C-x
C-g
A buffer可以正常恢复中文
A buffer 里 C-x
b
C-g
A buffer不能恢复中文
A buffer 里 C-x
b
选择b buffer 再 C-x
b
选择A buffer, Abuffer还是不能恢复中文
感觉就是按下 前缀键后 再按其他的键 如 b
后 就直接将A buffer重置成 en 状态了
我这里C-x b 是ido-switch-buffer 命令,你的是 ivy 还是 helm?
It is bound to C-x b, <menu-bar> <buffer> <select-named-buffer>.
(ido-switch-buffer)
我这里也是用的ido-switch-buffer,问题和你一样,这个ido和ivy 有什么行为上的差异吗?
我不知道啊,我菜得很看到elisp头都晕了,我看大佬gif里用的反正不是ido
你们给的信息很重要。
我有点眉目,明天把这部分再优化一下。
还有个小问题反馈一下,s-i,s-p这些super开头的组合键没法在中文状态下使用。
这个super键 在mac 下我是通过下面的命令绑定:
(setq mac-option-modifier 'super)
Windows 下这样绑定:
(when (eq system-type 'windows-nt)
(setq w32-pass-lwindow-to-system nil)
(setq w32-lwindow-modifier 'super)
(setq w32-pass-rwindow-to-system nil)
(setq w32-rwindow-modifier 'super)
(w32-register-hot-key [s-]))
测试代理不要用ping,可以curl <destination>
现在的代理基本上只能支持TCP/UDP协议,ping是基于ICMP协议的,据我所知只有VPN这样的代理才能支持
几个可能发生问题的环节
- Windows Terminal
- WSL 2 Ubuntu
- 调用 Windows 分区下的
/mnt/d/im-select.exe
可执行文件
- A buffer 中文
- B buffer英文
A buffer 里 M-x
ido-switch-buffer
切换到 b buffer
B buffer 里 M-x
ido-switch-buffer
A buffer能恢复中文
在A buffer里按 C-x b
这样切换到到b buffer 再C-x b
切换回a buffe A buffer 不能恢复中文状态了
C-x b
绑定的 ido-switch-buffer 命令 , 直接使用命令的话可以恢复,使用按键 不能恢复了???
(defvar preserve-triggers
'(switch-to-buffer
switch-to-prev-buffer
switch-to-next-buffer
other-window
windmove-up
windmove-down
windmove-left
windmove-right)
我找出问题了,
是前缀键的处理和记住buffer的输入法之间冲突了。
可以很容易的改掉。
不过我在尝试一个更底层的机制。