日常工作中经常使用 neovim 码代码和写文档,有时也在别的编辑器上使用 vim 插件,如果没有特殊设置,vim 模式会和中文输入法“打架”
因此我需要实现下面的特殊功能:
有了这些功能可以大幅的提升 vim 的输入体验
鼠须管自带的功能能满足后 3 点的需求,对于第 1 点需求可以在 macOS 的设置中实现。刚开始的时候感觉很完美,但在实际的使用过程中发现,鼠须管没有长句联想能力,很影响输入效率(即使使用了几个月还是不能适应),鼠须管的 shift 切换在一些情况下也有 bug ,对我来说是高频触发。因此在我发现另一种方法后,就放弃了使用鼠须管。
无意中在 V2EX 上搜到这篇 帖子,根据帖子的配置,我用 Karabiner 实现了以上的需求。
只设置以上两种输入法,因为不使用第三方输入法的英文状态,所以我们需要关闭第三方输入法的 shift 切换功能,确保不会切换过去。shift 在之后会被 Karabiner 用来控制 ABC 输入法和第三方输入法之间的切换(即中英文切换)
Simple Modifications
设置 caps 映射为 esc 即可Complex Modifications
配置系统设置
-键盘
-键盘快捷键
-输入法
里,将输入法切换的快捷键设置为 F18 就能实现单击 esc 或 shift 进行切换。 1
gpt5 2023-09-17 17:40:32 +08:00
用系统快捷键切换输入法,不知道你是摸索过后选了这种方法,还是无意中选对了。
karabiner 有命令可以直达某种输入法( 2 种以上语言切换时很方便),但是这种方法对中文输入法有 bug ,时常是图标边成中文了,但实际上输入法没变。我当时琢磨了好久,才想到判断当前语言然后模拟系统快捷键来切换😂 |
2
LinYaXuan 2023-09-17 18:05:47 +08:00 via iPhone
推荐一下这个配置方案 https://github.com/Vonng/Capslock
|
3
lanlanye 2023-09-17 18:15:59 +08:00
https://github.com/ybian/smartim 这个插件就可以解决吧,normal 模式使用英文,insert 模式切换回之前的输入法
|
4
EyebrowsWhite 2023-09-17 18:49:20 +08:00 via iPhone
im-select
|
5
kxccc OP vim 的插件也尝试过,但不能支持其他编辑器上的 vim 模式(比如 xcode )。用 shift 切换输入法也还得用 Karabiner 来实现,干脆就用 Karabiner 了。
|
6
imkerberos 2023-09-18 07:43:12 +08:00
最根本的办法是抄 emacs-rime 的方案, 写一个 vim 的 rime 客户端.
|
8
YYYMagic 278 天前
如果我输入法里面还有一个日语输入法,每次 f18 切换的下一个输入法都是日语,楼主有好办法吗
|
9
YYYMagic 278 天前
@YYYMagic 找到办法了,按 ESC 的时候不改为按下输入法切换键,而是直接改为设置输入法为英文,json 配置在这里:
https://gist.github.com/binc4t/c698b1a6933071e9c07f7fecad12e573 |
11
jackiexiao 23 天前
来试一下 [MacVimSwitch]( https://github.com/Jackiexiao/macvimswitch/) ( ps:目前我在 mac m1 上测试运行没问题)
- 按 ESC 键时自动切换到 ABC 英文输入法 - 内置 Shift 键切换 ABC 英文输入法和中文输入法 - 重要提示:使用前请先关闭输入法中的"使用 Shift 切换中英文"选项 - 如需关闭可在状态栏菜单中设置 - 温馨提示:如果你不想使用 Shift 键切换输入法,在 Mac 上,CapsLock 短按可以切换输入法,长按才是锁定大写 感谢 AI 编程技术的进步,这个仓库没有一行代码是我自己写的哈哈哈(都是 Cursor 生成的),尽管生成的时候 bug 很多,调试了好多次 orz.. |