25

我看到了 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?

4

7 回答 7

27

我建议您为此使用 AutoHotkey。

您可以更改每个应用程序的热键:

SetTitleMatchMode,2
#IfWinActive,VIM
   CAPSLOCK::ESC
return

#IfWinActive
   CAPSLOCK::CTRL
return

例如,这个脚本设置 caps 在 vi​​m 中转义,并控制其他任何地方。

于 2010-01-27T07:01:37.727 回答
2

capslock 键没有 vim 键标识符,因此您必须使用扫描码进行操作。

这就像试图将 ctrl 键或 shift 键映射到某个东西 - 这些键本身不会做任何事情,它们是键修饰符,因此它们不能以相同的方式被捕获。

于 2010-01-27T07:01:40.630 回答
2

映射必须在操作系统级别而不是 vim 完成,因此复杂性来自操作系统。例如,在我的 Ubuntu 机器上,我有以下内容~/.Xmodmap

! Esc on caps lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

但是,我认为 REGEDIT 脚本并没有那么糟糕。有点丑,但只有两行!

于 2010-01-28T00:51:27.700 回答
1

您也可以使用 Ctrl-C 转义(至少在 vim 中可用)。这是我通常使用的。不过,我通常交换控制和大写锁定,并且通过 Windows 中的注册表设置和 ubuntu 中的键盘配置来完成。

编辑:正如@mMontu 亲切地指出的那样,Ctrl-C 比 Esc 更残酷:正如在这个适当的问题中所述,

vim 不会检查你是否只是写了缩写的一部分,并且它不会运行你的插件在每次离开插入模式时设置的花哨的自动命令

我没有注意到,因为我的 vimming 还没有那么先进。

于 2010-11-05T14:10:50.790 回答
1

对我来说效果很好的另一种选择是使用 本网站中的说明

本质上:安装 Microsoft 的 Keyboard Layout Creator,然后编辑其源代码以允许重新映射 CAPS LOCK 并创建您自己的自定义布局。

于 2014-06-19T16:21:44.943 回答
1

你也可以试试这个:SharpKeys。我用它交换了 CapLock 和 Esc。

于 2010-11-23T12:17:03.147 回答
0

重新映射CAPSLOCK到WindowsESCCTRL在 Windows 上

我已经在此答案中描述的一个非常好的工具使您可以重新映射CAPSLOCK到两者

  1. ESC(单独按下时)和
  2. to CTRL(与其他键一起按下时)

只需使用ililim这个小块开源软件

您不需要管理员权限,ESC并且CTRL仍在按预期工作。

我用它来享受方便的CTRL + anything按压而不伤到我的小指,并在 Vim 中切换我通过 MobaXterm 中的 ssh 使用的模式。只需按照此说明进行安装。

于 2020-05-19T14:24:40.067 回答