我看到了 vim wiki 提示,它说为了将 Esc 重新映射到 CAPS LOCK,您必须编辑以下 Windows 代码:
REGEDIT4
[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00
是否可以通过仅在 _vimrc 中添加或修改行来将 Esc 重新映射到 CAPS LOCK?
我建议您为此使用 AutoHotkey。
您可以更改每个应用程序的热键:
SetTitleMatchMode,2
#IfWinActive,VIM
CAPSLOCK::ESC
return
#IfWinActive
CAPSLOCK::CTRL
return
例如,这个脚本设置 caps 在 vim 中转义,并控制其他任何地方。
capslock 键没有 vim 键标识符,因此您必须使用扫描码进行操作。
这就像试图将 ctrl 键或 shift 键映射到某个东西 - 这些键本身不会做任何事情,它们是键修饰符,因此它们不能以相同的方式被捕获。
映射必须在操作系统级别而不是 vim 完成,因此复杂性来自操作系统。例如,在我的 Ubuntu 机器上,我有以下内容~/.Xmodmap
:
! Esc on caps lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
但是,我认为 REGEDIT 脚本并没有那么糟糕。有点丑,但只有两行!
您也可以使用 Ctrl-C 转义(至少在 vim 中可用)。这是我通常使用的。不过,我通常交换控制和大写锁定,并且通过 Windows 中的注册表设置和 ubuntu 中的键盘配置来完成。
编辑:正如@mMontu 亲切地指出的那样,Ctrl-C 比 Esc 更残酷:正如在这个适当的问题中所述,
vim 不会检查你是否只是写了缩写的一部分,并且它不会运行你的插件在每次离开插入模式时设置的花哨的自动命令
我没有注意到,因为我的 vimming 还没有那么先进。
对我来说效果很好的另一种选择是使用 本网站中的说明
本质上:安装 Microsoft 的 Keyboard Layout Creator,然后编辑其源代码以允许重新映射 CAPS LOCK 并创建您自己的自定义布局。
你也可以试试这个:SharpKeys。我用它交换了 CapLock 和 Esc。