macos下,实现vim切换模式自动切换输入法

macos下,实现vim切换模式自动切换输入法

作为一个重度vim模式使用用户,切换模式输入法不自动切换一直是一个蛋疼的问题,目前主要解决方案就是使用im-select,在对应使用的应用里面设置im-select的路径
但是这种方式有一个问题就是如果应用不支持,就不会自动切换

另一种方式就是使用rime输入法,但是对于我来说配置成本太高,不划算.

经过我的研究,发现karabiner可以实现在任意应用中使用vim,按下对应的模式切换键实现自动切换输入法.

安装karabiner

karabiner是mac下一个按键功能映射的软件,可以自己定义json文件实现许多复杂的功能的映射

brew安装

1
brew install karabiner

安装im-select

继续brew安装

1
brew install im-select

创建映射文件

/Users/fingerfrings/.config/karabiner/assets/complex_modifications路径创建一个vim-esc.json文件

文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"title": "Vim shortcuts",
"rules": [
{
"description": "Map ^+[ to esc",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "open_bracket",
"modifiers": {
"mandatory": ["control"]
}
},
"to": [
{
"key_code": "escape"
},{
"shell_command": "/usr/local/bin/im-select com.apple.keylayout.ABC"
}
]
}
]
},

]
}

上面文件的映射内容就是将Ctrl-[映射为Esc,同时执行/usr/local/bin/im-select com.apple.keylayout.ABC命令

设置karabiner

complex Modifications选项中启用Map ^+[ to esc

参考文档

https://karabiner-elements.pqrs.org/docs

Author

finger

Posted on

2023-09-20

Updated on

2025-06-11

Licensed under

Comments