为什么在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中的行?

+0

对不起,我*有*要问:你为什么要这样做? – paxdiablo 2010-01-27 06:53:23

+8

paxdiablo,这是非常普遍的。为什么?因为CAPS LOCK是有史以来最无用的钥匙,但拥有优质房地产。对于另一个ctrl键来说,这是一个非常方便的位置,或者,如果您曾经使用过Vim,那就是非常需要的ESC键。 – Jay 2010-01-27 06:58:22

+0

对不起,我误解了。我以为你想用ESC键作为CAPSLOCK。但我仍然很难理解,将ESC键向下移动一两英寸会节省太多时间。你真的测量过一天中浪费的时间吗?你应该考虑一个非模态编辑:-) – paxdiablo 2010-01-27 07:03:06

我建议您为此使用AutoHotkey。

你可以做一个每个应用程序的热键变化:

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

#IfWinActive 
    CAPSLOCK::CTRL 
return 

这个脚本,例如设置上限在vim中逃脱,并控制其他地方。

+0

AutoHotkey的是伟大的 – alexchenco 2010-01-27 11:23:21

+0

@jay但没有上限,其中锁定在随后结束了? – sayth 2012-07-17 09:55:34

+0

@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脚本是如此糟糕。这有点丑,但只有两行!

+5

更简单:'setxkbmap -option caps:escape'或将其添加到X /输入配置的相关部分。 – ephemient 2010-01-28 23:10:52

+0

@ephemient谢谢你的提示。 – 2011-01-12 00:22:10

+1

也可以通过GUI执行此操作。进入系统/首选项/键盘,打开布局选项卡,打开选项对话框。在Caps Lock标题下,有一个不同的行为列表可供选择,其中一个是交换Caps Lock和ESC。 – hugomg 2012-02-10 15:32:30

你也可以使用Ctrl-C来转义(至少在vim中可用)。这是我通常使用的。不过,我通常会交换控制和capslock,并且通过ubuntu中的windows和keyboard conf中的注册表设置完成。

编辑:作为@mMontu好心指出,按Ctrl-C更残酷比Esc键:如this appropriate question指出,

VIM不会打扰检查,如果你只是写了一个缩写 的一部分,它是不会运行看中自动命令你 插件已建立了每次你离开插入模式

我没有注意到,因为我vimming不是那么先进呢。

+2

您应该意识到Ctrl-C和ESC之间的细微差别:http://stackoverflow.com/questions/5030164/whats-the-difference-between-ctrlc-and-ctrl/5036294#5036294 – mMontu 2011-10-17 18:41:21

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

运作良好,我是使用上的说明,在 this website

本质另一种选择:安装微软的键盘布局的创造者,然后编辑它的源代码,允许重新映射的CAPS LOCK并创建自己的自定义布局。