Map 如何在VIM中映射CAPS LOCK key?
我在Windows下使用GVIM。 要将CAPSLOCK映射到Ctrl+^ 有办法吗 顺便说一句,我在网上看到了很多关于如何使用registry hack交换CAP和Esc的示例,但是没有一个使用VIM map命令,而是使用外部工具和注册表更改。我认为你做不到。 我相信CAPS-LOCK可能在vim看到它之前就被操作系统翻译了。 因此,您需要在操作系统级别进行黑客攻击,就像您已经看到的注册表黑客一样Map 如何在VIM中映射CAPS LOCK key?,map,vim,capslock,Map,Vim,Capslock,我在Windows下使用GVIM。 要将CAPSLOCK映射到Ctrl+^ 有办法吗 顺便说一句,我在网上看到了很多关于如何使用registry hack交换CAP和Esc的示例,但是没有一个使用VIM map命令,而是使用外部工具和注册表更改。我认为你做不到。 我相信CAPS-LOCK可能在vim看到它之前就被操作系统翻译了。 因此,您需要在操作系统级别进行黑客攻击,就像您已经看到的注册表黑客一样 编辑:自动热键看起来可以用来编辑。这样一来,第三方应用程序在操作系统级别进行黑客攻击,而你只是挂
编辑:自动热键看起来可以用来编辑。这样一来,第三方应用程序在操作系统级别进行黑客攻击,而你只是挂接该应用程序。Capslock(以及Control和Shift等)是一个修改键,这意味着它与另一个普通键一起使用,以修改该键的含义。如果操作系统不将修改键传递给应用程序,除非同时按下了普通键,例如,应用程序将看不到按下
CTRL
,但windows下会看到CTRL-C
。?使用。这不是vim映射,但正如其他人所说的,您无法映射它。我使用AHK将CAPSLOCK映射到CTRL。Linux?对于X,使用xmodmap来更改键映射,例如
xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
将Esc映射到CapsLock键。谷歌搜索更多示例。由于Linux和Windows有一个解决方案(自动热键),我建议使用Mac在任何地方重新映射CapsLock。如果您的目的只是避免在Vim之外工作,您可以在您的.vimrc中添加以下行:
au VimEnter * !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
au VimLeave * !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'
当您进入Vim时,第一行将escape映射到caps lock键,当您退出时,第二行将正常功能返回到caps lock
这需要安装了xorg xmodmap包的Linux。对于Mac OS,您可以在“系统首选项”中重新映射系统范围内的“caps lock”键 遵循以下路径: 系统首选项>键盘>修改键
然后单击“caps lock”旁边的下拉框并选择“^Control”。在Linux系统中,这可以通过xmodmap完成 将其保存在主文件夹的文本文件中
! Swap caps lock and escape
remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock
使用.capstoescswitc这样的名称保存此文件
然后通过终端执行该文件
xmodmap ~/.capstoescswitc
如果您想使用它,只需切换脚本文件中的关键变量
有关更多信息,请参阅此解决方案,该解决方案不会在vim之外打破Caps Lock
窗户
Ubuntu 运行以下命令:
wget -O - https://raw.githubusercontent.com/grabantot/scripts/master/install/install_caps_to_esc.sh | bash
或手动执行以下操作:
sudo apt get install xdoool xbindkeys
。我们还将使用xprop
和xset
(默认情况下应安装)~/caps\u to_esc.sh
脚本:~/.xbindkeysrc
:kill所有xbindkeys&&xbindkeys
xbindkeys
将在按下Caps\u Lock时检测并调用Caps\u to\u esc.sh
脚本xprop
xdool
xset
检查Caps Lock是否开启,如果开启,则通过xdool
xbindkeys
将检测我们发送的Caps\u锁,但我们忽略它我想这样做的原因之一是创建一个软capslock,就像其他人提到的,可能是为了避免在正常模式下保持capslock打开。
我用这个插件在退出插入模式时关闭了capslock,看起来还可以 在mac上,也可以使用Karabiner() $brew桶安装卡箍元件
安装后,您可以在“简单修改”选项卡中将capslock键映射到esc键。需要注意的是,这是系统范围内的,这意味着您到处都会丢失capslock密钥。IMO需要capslock。对于像我这样的普通WINDOWS用户来说,从2020年起,一个有效的例子就是使用 当前正在使用此单行脚本:
Capslock::Esc
运行它,你的问题就解决了。希望有帮助。:) @rsoren的答案是有效的。但问题是,如果打开了多个缓冲区,从一个缓冲区退出,也会恢复所有其他缓冲区的映射。用BufEnter和Buflifeve代替Viminer和Vimleve,我成功了
au BufEnter * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
au BufLeave * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'
在Windows上重新映射CAPSLOCK
到ESC
和CTRL
如果要将CAPSLOCK
重新映射到两者
ESC
(单独按下时)CTRL
(用其他键按下时)
你可以用伊利林ESC
和CTRL
仍按预期工作
我用它来享受方便的CTRL+anything
按下而不伤害我的小指,并在Vim中切换模式,我在MobaXterm中通过ssh使用这些模式。对于安装,只需遵循以下步骤
在Linux上重新映射CAPSLOCK
到ESC
和CTRL
要在Linux上执行同样的操作,可以使用。要在Ubuntu上安装它,请使用:
sudo apt install xcape
对于实际映射,请执行以下操作:
setxkbmap -option ctrl:nocaps
xcape -e 'Control_L=Escape'
第一个命令是将CAPSLOCK
映射到ESC
,而第二个命令负责使用其他键按下CTRL
要使此功能在X会话中永久工作,您可以将其添加到
~/.xprofile
我自己完成了此问题的答案,但我在寻找稍微不同的内容:
au BufEnter * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
au BufLeave * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'
sudo apt install xcape
setxkbmap -option ctrl:nocaps
xcape -e 'Control_L=Escape'
! ~/.xmodmap
clear lock
keycode 66 = Escape
keycode 9 = Caps_Lock
add lock = Caps_Lock
clear control
add control = Control_L Control_R Escape