如何在不使用第三方程序的情况下重新映射我的OSX键盘?

时间:2016-08-02 23:45:15

标签: macos vim

我目前正在使用Seil重新映射大写封锁以在OSX 10.11上逃脱。每当我检查htop时,只是为了看看当系统没有做任何事情(程序打开但没有做太多处理)时运行的是什么,Seil总是在那里并且在其CPU和内存使用方面有所波动。它可能不是什么大不了的事情,但考虑到我只使用vim来偶尔使用平面文本文件,因此总是运行这个东西感觉很疯狂。我不想每次使用vim时都要启动Seil。我最好选择禁用大写锁定并将桥连接到逃生键吗? Vim是OSX的标准配置,并且在没有重新映射到某些东西的情况下无法使用,所以我认为这会出现而不是依赖别人为它制作应用程序。

1 个答案:

答案 0 :(得分:2)

重新映射大写锁定以控制

您可以将大写锁定键重新映射到键盘设置中的 control 键(单击Modifier Keys按钮)。

enter image description here

在vim中, esc 的别名是 control - [,这比到达 esc <更容易获取< / kbd> key。

重新映射大写锁定以退出Vim

导航到主文件夹

下的Library/Preferences/ByHost目录
cd ~/Library/Preferences/ByHost

识别隐藏属性列表文件

ls -a | grep Global

将其分配给shell变量以便以后轻松引用

pfile=$(ls -a | grep Global)

确保新创建的变量pfile具有正确的值。它看起来应该是这样的:.GlobalPreferences.7D7C488E-0E83-5562-B58B-011C540890F3.plist

echo $pfile

进行备份以防万一出现可怕的错误

cp $pfile{,.bak}

将pfile复制到主目录并将其转换为xml

cp $pfile ~/keys-binary.plist
plutil -convert xml1 -o ~/keys-xml.plist ~/keys-binary.plist

打开文件并搜索文字HIDKeyboardModifierMappingSrcHIDKeyboardModifierMappingDst。将值integer下的HIDKeyboardModifierMappingDst标记设置为5,HIDKeyboardModifierMappingSrc下设置为0,如下所示。

 <key>com.apple.keyboard.modifiermapping.1452-588-0</key>
 <array>
     <dict>
         <key>HIDKeyboardModifierMappingDst</key>
         <integer>5</integer>
         <key>HIDKeyboardModifierMappingSrc</key>
         <integer>0</integer>
     </dict>
 </array>

保存,然后转换回二进制文件

plutil -convert binary1 -o ~/keys-binary.plist ~/keys-xml.plist

最后,将此文件复制回ByHost目录,替换原始文件。

在更改生效之前,您需要注销并重新登录。重新登录后,将以下行添加到.vimrc

noremap  <Esc>Op <Esc>
noremap! <Esc>Op <Esc>

如果你在终端打开vim,这将有效。如果您正在使用gvim,请尝试我引用的Solution 2 by eelco以使用几个不同的映射来编写此帖子,以使其在终端中正常工作。

另请注意,为此,必须检查“终端首选项”中的允许VT100应用程序键盘模式选项。