在Windows中使用CAPS LOCK作为Vim模式切换键

很多人问及如何将大写locking映射到Esc控制 ,但我想使用Caps Lock键作为插入模式和普通模式之间的切换,我还没有find任何解决方法去做这个。

(那么我想让Shift Caps Lock做一个Caps Lock通常单独做的事情,对于那些罕见的情况,当你需要Caps Lock的时候 ,就像打长的CONSTANT名字一样,但是这是一个单独的问题,如果实际上有办法完成第一部分的话,所有这些都是不可能的。)

我现在主要在工作中使用Windows,所以这就是我现在最关心的事情。 (因为这可能涉及到某些仅仅是Windows的黑客,所以我会针对OS X另外提出一个问题,我也会使用这个问题。)

你的请求是不寻常的,我会建议不要偏离默认模式切换那么多,但你可以试试这个:

  1. 首先,使用特定于操作系统的方法(如您所提到的链接中所述),您需要将Caps Lock键重新映射到另一个(未使用的,例如F12 )键,因为特殊的Caps Lock不能在Vim中重新映射。
  2. 然后,为改变模式的重映射键定义两个Vim映射。

这是一个简单的例子:

 :nnoremap <F12> a :inoremap <F12> <Esc> 

然后,您可以使用大写锁定键(重新映射到F12)在插入和命令模式之间切换。

我不认为你可以用Vim本身做到这一点,但它看起来像你可以使用AutoHotKey做到这一点。 我不是一个Autohotkey专家,但是这就是我一起打的:

从这里的例子:

这个脚本使用Capslock键给一个热键2个不同的输出。 我不确定是否需要使用+; 而不是:在第二部分切换到命令模式。

 n=0 Capslock:: On := 1 If On=True { Send i On := False } Else { Send : On := True } Return 

上述脚本未经测试,但在发送i(插入)或:(插入命令模式)之间切换。 不幸的是,这将不会跟踪VIM的当前状态。你必须学习我的AHK脚本(如何使用变量,所以当插入时,你点击'?','/',' esc',':'等,它将知道变量用于在AHK中存储VIM模式以及发送实际的代码)。

参考文献:

http://www.autohotkey.com/board/topic/68710-autohotkey-toggle-state-function/ http://www.autohotkey.com/docs/commands/SetNumScrollCapsLockState.htm http://www.autohotkey.com /板/主题/ 42379-切换键/

对于你的第二部分,它看起来可以用类似的东西来完成:

http://www.autohotkey.com/board/topic/51215-completely-disable-capslock/ http://www.autohotkey.com/board/topic/61-use-capslock-as-a-toggle/ http: //www.autohotkey.com/board/topic/68710-autohotkey-toggle-state-function/

不完全确定,但你做了VIM的注册表编辑来正确识别Capslock的变化:

http://www.autohotkey.com/docs/misc/Remap.htm#