Windows下修改键位映射
vscode 下的键位映射
在 Linux 的系统里,想要调整 vim 的映射,一般是调整.vimrc配置文件,此处不多介绍。
在 Windows 下面,单用 vim 做编辑器的应该不多,我是结合 vscode 使用,下面讲一讲如何配置。
插件下载
下载 vscode 的插件Vim,此插件支持在 vscode 进行 vim 的模式编辑操作; 如果对 vim 的操作不够熟悉,也可以下载插件Learn Vim,根据引导进行操作上的熟悉。
配置映射
vim 的键位映射分为在不同模式下的映射,这是因为,普通模式,插入模式,可视模式的键位操作本来就是不一致的。 按下Ctrl+shift+p,进入命令面板,搜索setting,点击首选项:打开用户设置(json),这就打开了 settings.json 文件,在里面添加:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"vim.normalModeKeyBindings": [
{
"before": ["J"],
"after": ["5", "j"]
},
{
"before": ["K"],
"after": ["5", "k"]
}
],
"vim.visualModeKeyBindings": [
{
"before": ["J"],
"after": ["5", "j"]
},
{
"before": ["K"],
"after": ["5", "k"]
}
]
这里"vim.normalModeKeyBindings"和"vim.visualModeKeyBindings"就分别是普通模式和可视模式的键位映射配置项,在里面加入你想要的键位映射就行了。每个键位映射的模式就是这样
1
2
3
4
5
{
"before": ["J"],
"after": ["5", "j"]
},
"before"是你想要的键位,"after"是你想要的键位效果,所以映射之后,按下J就有5j的效果,可以一次下移 5 行。
参考
以下是我目前的 setting,仅供参考,余下有不懂的部分,欢迎自行谷歌
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"vim.useSystemClipboard": true,
"vim.normalModeKeyBindings": [
{
"before": ["H"],
"after": ["^"]
},
{
"before": ["L"],
"after": ["g", "_"]
},
{
"before": ["J"],
"after": ["5", "j"]
},
{
"before": ["K"],
"after": ["5", "k"]
},
{
"before": ["t", "h"],
"commands": [":tabp"]
},
{
"before": ["t", "l"],
"commands": [":tabn"]
},
{
"before": ["<leader>", "h"],
"after": ["ctrl+w", "h"]
},
{
"before": ["<leader>", "l"],
"after": ["ctrl+w", "l"]
},
{
"before": ["<leader>", "c"],
"after": ["ctrl+w", "c"]
},
{
"before": ["<leader>", "v"],
"after": ["ctrl+w", "v"]
}
],
"vim.visualModeKeyBindings": [
{
"before": ["H"],
"after": ["^"]
},
{
"before": ["L"],
"after": ["g", "_"]
},
{
"before": ["J"],
"after": ["5", "j"]
},
{
"before": ["K"],
"after": ["5", "k"]
}
],
"vim.leader": "<space>",
"vim.easymotion": true,
"vim.sneak": true,
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["<Leader>", "f", "d"],
"commands": ["editor.action.formatDocument"]
},
{
"before": ["f"],
"after": ["s"]
},
{
"before": ["F"],
"after": ["S"]
},
{
"before": ["s"],
"after": ["c", "l"]
},
{
"before": ["S"],
"after": ["^", "C"]
}
],
"vim.visualModeKeyBindingsNonRecursive": [
{
"before": ["f"],
"after": ["s"]
}
],
"vim.operatorPendingModeKeyBindingsNonRecursive": [
{
"before": ["f"],
"after": ["z"]
},
{
"before": ["F"],
"after": ["Z"]
}
],
下面这个链接亦可供学习参考: just vim it
CapsLock 与 esc 键对位
在使用 vim 编辑时,把 CapsLock 键位与 esc 键重新映射应该是很多人的选择。与其他键位调整不同,这两个键的映射是所有模式下的,仅仅调整 vim 的配置文件并不方便,加之 CapsLock 本身就没什么用处,所以从系统层面实现键位对位是一个不错的选择。 我们直接修改 Windows 的注册表。 新建一个 reg 文件,就叫 capslock2esc.reg,再将以下内容复制进去
1
2
3
4
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,01,00,01,00,3a,00,00,00,00,00
此时鼠标双击这个文件,就可以修改注册表,实现系统层面的键位对位。 再重启即可,十分方便。 若想研究这个文件的内容,请参考下面链接, https://kang000feng.github.io/blog/2015/02/04/remap-capslock-key/ 或者自行谷歌。