" /> Windows下修改键位映射 | henyuer's blog
文章

Windows下修改键位映射

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/ 或者自行谷歌。

本文由作者按照 CC BY 4.0 进行授权