为什么在Vim中将Esc重新映射到CAP LOCK如此复杂?
只见VIM维基技巧和它说,为了重新映射Esc键帽锁,你必须编辑下面的Windows代码:为什么在Vim中将Esc重新映射到CAP LOCK如此复杂?
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
是否有可能重新映射Esc键只会增加或修改,以大写锁定_vimrc中的行?
我建议您为此使用AutoHotkey。
你可以做一个每个应用程序的热键变化:
SetTitleMatchMode,2
#IfWinActive,VIM
CAPSLOCK::ESC
return
#IfWinActive
CAPSLOCK::CTRL
return
这个脚本,例如设置上限在vim中逃脱,并控制其他地方。
AutoHotkey的是伟大的 – alexchenco 2010-01-27 11:23:21
@jay但没有上限,其中锁定在随后结束了? – sayth 2012-07-17 09:55:34
@sayth大多数人从不需要它 - 多年来我一直没有它。 – Jay 2012-07-17 19:47:25
没有用于大写锁定密钥的vim密钥标识符,因此您必须使用扫描代码执行此操作。
这就像试图将ctrl键或shift键映射到某些东西 - 这些键本身不做任何事情,它们是关键修饰符,因此它们不能以相同的方式被困住。
映射必须在操作系统级而不是vim上完成,所以复杂度来自操作系统。例如,我的Ubuntu机器上我在~/.Xmodmap
如下:
! Esc on caps lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
不过,我不认为REGEDIT脚本是如此糟糕。这有点丑,但只有两行!
你也可以使用Ctrl-C来转义(至少在vim中可用)。这是我通常使用的。不过,我通常会交换控制和capslock,并且通过ubuntu中的windows和keyboard conf中的注册表设置完成。
编辑:作为@mMontu好心指出,按Ctrl-C更残酷比Esc键:如this appropriate question指出,
VIM不会打扰检查,如果你只是写了一个缩写 的一部分,它是不会运行看中自动命令你 插件已建立了每次你离开插入模式
我没有注意到,因为我vimming不是那么先进呢。
您应该意识到Ctrl-C和ESC之间的细微差别:http://stackoverflow.com/questions/5030164/whats-the-difference-between-ctrlc-and-ctrl/5036294#5036294 – mMontu 2011-10-17 18:41:21
对不起,我*有*要问:你为什么要这样做? – paxdiablo 2010-01-27 06:53:23
paxdiablo,这是非常普遍的。为什么?因为CAPS LOCK是有史以来最无用的钥匙,但拥有优质房地产。对于另一个ctrl键来说,这是一个非常方便的位置,或者,如果您曾经使用过Vim,那就是非常需要的ESC键。 – Jay 2010-01-27 06:58:22
对不起,我误解了。我以为你想用ESC键作为CAPSLOCK。但我仍然很难理解,将ESC键向下移动一两英寸会节省太多时间。你真的测量过一天中浪费的时间吗?你应该考虑一个非模态编辑:-) – paxdiablo 2010-01-27 07:03:06