很多人都有asked和written关于如何map Caps Lock to Esc或 Control ,但我想使用 Caps Lock 键作为插入模式和普通模式之间的切换,我没有找到任何解决方法来解决这个问题。
(然后我想做 Shift 大写锁定单独执行大写锁定通常会做什么,对于那些罕见的时候你需要大写锁定,就像输入长CONSTANT名字一样。但这真的是一个单独的问题,如果实际上有一种方法可以完成第一部分,我将会在以后找到。所有这些都很可能是不可能的。)
这些天我主要在工作中使用Windows,所以这是我目前最关心的。 (因为这可能涉及某些仅限Windows的黑客攻击,我会问一个针对OS X的单独问题,我也会使用它。)
答案 0 :(得分:2)
你的请求很不寻常,我建议不要偏离默认模式切换那么多,但你可以试试这个:
这是一个简单的例子:
: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更改: