09月29, 2016

使用Karabiner修改macOS键位实现vim模式

由于 Kanabiner 在 macOS 的最新版本 Seirra 下失效。请考虑 Karabiner-Elements

我们都知道macOS在系统中除了传统的箭头上下左右键(Arrow)以外,还集成了一套类似于Emacs中的光标移动方式,即

  • C-f forward
  • C-b back
  • C-n next
  • C-p previous

这也是我从一开始使用Mac就习惯使用的移动方式。 然而自从Join了Vim党,我的习惯中又多了一套Vim的移动方式,即hjkl分别对应左下上右。虽说两套系统迥异(暗示着Vim党和Emacs党不可调和的矛盾),但是并没有按键冲突(说明在现实生活中也是可以 vim ~/.emacs 的嘛)。然而比较关键的是,由于快捷键冲突,macOS这一套理论在有些软件(形如Office套件,chrome浏览器的某些地方,等等)是不能用的。而且macOS里没有Vim的那一套理论。这是我长久以来的心病,也是今天写下这篇文章的原因。

希望本是无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。

没有的东西我们自己hack一个不就得了 Karabiner是macOS下强大的KeyMap软件(Free software),它的界面形如这样 Karabiner 作为一个有梦想的Geek,我并不太想去研究它给好的默认选项(其实也大概看过,都是一些比较常用的设置,估计也足以满足大部分人要求),毕竟它是一个支持编程的软件 Karabiner-setting 在上面这个菜单中找到Open private.xml这个选项,点击即可打开个人设置的xml文件了 参考官方文档我们可以写出以下代码来添加我们需要的vim模式

<item>
    <name>add 3 func</name>
    <identifier>private.add_3_func</identifier>
    <autogen>__KeyToKey__ 
        KeyCode::J, ModifierFlag::CONTROL_L,
         KeyCode::CURSOR_DOWN
     </autogen>
     <autogen>__KeyToKey__ 
        KeyCode::K, ModifierFlag::CONTROL_L,
         KeyCode::CURSOR_UP
     </autogen>
     <autogen>__KeyToKey__ 
        KeyCode::H, ModifierFlag::CONTROL_L,
         KeyCode::CURSOR_LEFT
     </autogen>
     <autogen>__KeyToKey__ 
        KeyCode::L, ModifierFlag::CONTROL_L,
         KeyCode::CURSOR_RIGHT
     </autogen>
  </item>

这里我选择了左边的CONTROL键作为prefix,注意如果你要其他的前缀按键,你需要参考这里,里面如果没有的话你要自己添加以后才能使用。具体的按键叫什么,可以用它自己的工具查看: Karabiner-key 此外我还顺便设置了一下键盘连击(key repeat)的反应时间 Karabiner-delay 以前要等上1s才能连击,还是比较不爽的。 好了,接下去就看能不能习惯了

为了世界和平

本文链接:https://sxing.xyz/post/使用karabiner修改macos键位实现vim模式.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。