V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jiyinyiyong
V2EX  ›  程序员

macOS Sierra 怎么把分号冒号互换

  •  
  •   jiyinyiyong ·
    jiyinyiyong · 2017-01-16 13:47:06 +08:00 · 2624 次点击
    这是一个创建于 2902 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上个月升级 MacOS Sierra 之后, 原来用的 Karabiner 就不能用了, 给作者捐钱了然而还是没有做支持. 原来的键位映射都失效了, 就 Caps Lock 还能用是系统映射一下. 现在最难受的还是冒号的事情, 感觉写代码的速度都有点被拖慢了, 经常打错要反应过来. 求助求助, 有没有人想到办法可以直接映射啊?

    那个 Karabiner, 作者直接重写了, 结果到现在很多功能还没做支持, 好忧伤.
    https://github.com/tekezo/Karabiner-Elements/commits/master
    9 条回复    2017-01-17 00:26:10 +08:00
    fds
        1
    fds  
       2017-01-16 14:02:53 +08:00
    我觉得用 hammerspoon 应该可以,思路是: hs.hotkey.bind 注册分号和冒号为热键,在接到按下分号或冒号时 :disable() 关闭热键,然后 hs.eventtap.keyStroke 发送冒号或分号,抬起按键后重新 :enable() 热键。
    xx0219
        2
    xx0219  
       2017-01-16 14:20:13 +08:00
    好像.... 用 keyboard maestro 很简单的啊..... 输入: 输出; 输入; 输出: ....

    ![]( http://oduizitoj.bkt.clouddn.com/2017-01-16-Screen%20Shot%202017-01-16%20at%2014.19.44.png)
    JamesPan
        3
    JamesPan  
       2017-01-16 14:20:59 +08:00
    楼主能分享一下什么场景下分号冒号互换能提高编程效率吗?
    mind3x
        4
    mind3x  
       2017-01-16 14:46:52 +08:00
    @JamesPan 大概是比如 Scala, golang 这些 statement 不需要分号,而显式类型声明(Scala)或赋值声明(Go)又要用到分号的
    jiyinyiyong
        5
    jiyinyiyong  
    OP
       2017-01-16 14:54:46 +08:00
    @JamesPan 习惯吧, 我在 JavaScript, CoffeeScript, Clojure 当中都会用到大量的分好, 用了一年多已经形成肌肉记忆了. 也就 JavaScript 里分号贼多.
    jiyinyiyong
        6
    jiyinyiyong  
    OP
       2017-01-16 14:57:03 +08:00
    @fds
    @xx0219 我试试, 还得确认一下 Sierra 的支持. 本来 Karabiner 也是蛮简单的, 不支持升级后的 OS.
    hronro
        7
    hronro  
       2017-01-16 15:02:21 +08:00 via Android
    @jiyinyiyong standard js 不写分号😂
    QAPTEAWH
        8
    QAPTEAWH  
       2017-01-16 15:18:13 +08:00   ❤️ 1
    http://xahlee.info/kbd/osx_keybinding.html

    摘抄关键部分&修改:

    Create a file at ~/Library/KeyBindings/DefaultKeyBinding.dict, and put the following content.

    {
    ";" = ("insertText:", "\U003A");
    ":" = ("insertText:", "\U003B");
    }

    重新登录 / 重新打开程序。
    jiyinyiyong
        9
    jiyinyiyong  
    OP
       2017-01-17 00:26:10 +08:00
    @QAPTEAWH 真是无比简单粗暴的解决方案. 顺便问下为啥我配置 "\\" 的时候会出错了, 试了一会才搞定, 转义有点奇特.

    ```
    =>> cat DefaultKeyBinding.dict
    {
    ";" = ("insertText:", "\U003A");
    ":" = ("insertText:", "\U003B");
    "\\\\" = ("insertText:", "\U007C");
    "|" = ("insertText:", "\U005C");
    }
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   965 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:37 · PVG 06:37 · LAX 14:37 · JFK 17:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.