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

时间:2012-11-02 15:39:13

标签: windows vim keyboard

很多人都有askedwritten关于如何map Caps Lock to Esc Control ,但我想使用 Caps Lock 键作为插入模式和普通模式之间的切换,我没有找到任何解决方法来解决这个问题。

(然后我想做 Shift 大写锁定单独执行大写锁定通常会做什么,对于那些罕见的时候你需要大写锁定,就像输入长CONSTANT名字一样。但这真的是一个单独的问题,如果实际上有一种方法可以完成第一部分,我将会在以后找到。所有这些都很可能是不可能的。)

这些天我主要在工作中使用Windows,所以这是我目前最关心的。 (因为这可能涉及某些仅限Windows的黑客攻击,我会问一个针对OS X的单独问题,我也会使用它。)

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

我认为你不能用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中并发送实际代码。

参考文献:

http://www.autohotkey.com/board/topic/68710-autohotkey-toggle-state-function/ http://www.autohotkey.com/docs/commands/SetNumScrollCapsLockState.htm http://www.autohotkey.com/board/topic/42379-toggle-key/

对于你的第二部分,它似乎可以通过以下方式完成:

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#