为什么在Vim中将Esc重新映射到CAPS LOCK是如此复杂?

时间:2010-01-27 06:41:39

标签: windows vim capslock remap

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

7 个答案:

答案 0 :(得分:23)

我建议你使用AutoHotkey。

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

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

#IfWinActive
   CAPSLOCK::CTRL
return

例如,此脚本将cap设置为在vim中转义,并控制其他地方。

答案 1 :(得分:1)

封锁密钥没有vim密钥标识符,因此您必须使用扫描代码。

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

答案 2 :(得分:1)

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

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

但是,我认为REGEDIT脚本不是那么糟糕。这有点难看,但它只有两条线!

答案 3 :(得分:1)

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

编辑:正如@mMontu所说,Ctrl-C比Esc更残酷:如this appropriate question中所述,

  如果你刚写了一部分,vim就不会费心去检查   缩写,它不会运行花哨的自动命令你的   每次离开插入模式时都会设置插件

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

答案 4 :(得分:1)

您也可以尝试:SharpKeys。 我用它交换了Caps Lock和Esc。

答案 5 :(得分:1)

另一个对我有用的替代方法是使用中的说明 this website

基本上:安装Microsoft的键盘布局创建器,然后编辑其源代码以允许重新映射CAPS LOCK并创建自己的自定义布局。

答案 6 :(得分:0)

在Windows上将CAPSLOCK重映射到ESCCTRL

我已经介绍了in this answer的非常不错的工具,使您可以将CAPSLOCK重新映射到这两者

  1. ESC(单独按下时)和
  2. CTRL(用其他键按下时)

只需使用 ililim this little piece of open source software

您不需要管理员权限,ESCCTRL仍可以按预期工作。

我用它来享受方便的CTRL + anything按下操作而不会伤害我的小拇指,并切换了我在MobaXterm中通过ssh使用的Vim模式。要安装,请遵循this description