V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Dvel
V2EX  ›  macOS

改了 pnbf 键位到 hjkl,发现体验挺割裂的。。。

  •  
  •   Dvel · 2022-11-24 13:33:40 +08:00 · 1327 次点击
    这是一个创建于 730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    macOS 的 Emacs 那种键位:
    上下左右 Ctrl+pnbf ,还有 aehdwuk 之类的。
    发现编辑 ~/Library/KeyBindings/DefaultKeyBinding.dict 可以更改。
    想了好一阵子弄好了一些键位:

    {  
      "^a" = "moveToBeginningOfParagraph:";  // 移动到行首
      "^e" = "moveToEndOfParagraph:";        // 移动到行尾
      "^h" = "moveBackward:";                // 左
      "^l" = "moveForward:";                 // 右
      "^k" = "moveUp:";                      // 上
      "^j" = "moveDown:";                    // 下
      "^o" = "insertNewline:";               // 插入一行
      "^s" = "deleteBackward:";              // 往左删除一个
      "^d" = "deleteForward:";               // 往右删除一个
      "^w" = "deleteWordBackward:";          // 往左删除单词
      "^u" = "deleteToBeginningOfLine:";     // 往左删除到行首
      "^i" = "deleteToEndOfParagraph:";      // 往右删除到行尾
      // 有 Shift 的(产生选区)
      "^A" = "moveToBeginningOfParagraphAndModifySelection:";
      "^E" = "moveToEndOfParagraphAndModifySelection:";
      "^H" = "moveBackwardAndModifySelection:";
      "^L" = "moveForwardAndModifySelection:";
      "^K" = "moveUpAndModifySelection:";
      "^J" = "moveDownAndModifySelection:";
    }
    

    更改后又发现,大部分输入框都 OK 了,但很多编辑器都不行。
    比如 Firefox 地址栏是我更改后的键位,但到了 V2EX 的编辑框又回到了原始键位。

    9 条回复    2022-11-27 00:49:50 +08:00
    lessMonologue
        1
    lessMonologue  
       2022-11-24 13:36:26 +08:00   ❤️ 1
    一直用 vim 的人,看到 pnbf 真的很难理解😂
    Dvel
        2
    Dvel  
    OP
       2022-11-24 13:55:15 +08:00
    @lessMonologue #1 我刚用 Vim ,主要就是 IdeaVim ,插入模式补全还得按 Ctrl + n 来选择。
    在 JetBrains 上已经改好了,想着应用到全局。。。但是并不全局,那要不要习惯习惯 pnbf 🤔🤔🤔
    yuhangch
        3
    yuhangch  
       2022-11-24 14:05:07 +08:00   ❤️ 2
    可以试试 karabiner

    https://www.notion.so/macOS-96862a7815924c659a0fdf82a74e77a1
    >部分键位不能用于映射命令. 例如 `Option - u`, `Option - l`.
    不同软件对这些快捷键的支持程度不同. 有些支持全部 (例如 Notes), 有些只支持一部分, 有些软件自身的快捷键会覆盖这些快捷键.
    jheroy
        4
    jheroy  
       2022-11-24 15:33:59 +08:00
    karabiner-elements, 然后导入 vi-mode 的配置, 保证全局有效.
    flyJJ
        5
    flyJJ  
       2022-11-24 16:28:01 +08:00   ❤️ 1
    @lessMonologue 我是从 vim 跳到 emacs 的,好像 pnbf 是有含义的,P 代表 previous ,N 代表 next ,B 代表 backward ,而 F 则代表 forward 。
    Dvel
        6
    Dvel  
    OP
       2022-11-24 20:56:00 +08:00
    @yuhangch #3 试了一下,这是真·全局,把 Vim 普通模式都覆盖了。
    我已经设置了移动到行首行尾:
    ```
    nnoremap <C-h> ^
    nnoremap <C-l> $
    ```
    还是被 karabiner 给覆盖成左右了。
    DefaultKeyBinding.dict 是不太全局,karabiner 是过分全局 😓😓😓
    lessMonologue
        7
    lessMonologue  
       2022-11-25 15:12:18 +08:00
    @flyJJ 其实是跟 vim 中 pnbf 的含义一样,比如 vim 中也有很多<C-p>,<C-n>配置。不过上下左右我还是喜欢 hjkl
    Dvel
        8
    Dvel  
    OP
       2022-11-25 20:41:15 +08:00
    @Dvel #6 修正一下说法。
    Karabiner 可以设置单独 App ,或排除某 App 。
    还支持 CapsLock 映射成 Ctrl ,单独按下是 Esc ,组合按下还是 Ctrl 的这种操作,这对 Vim 也太舒服了。
    准备看看文档学习一下。。。
    pocarisweat
        9
    pocarisweat  
       2022-11-27 00:49:50 +08:00
    我就不一样了,用 Vim 在命令模式里老忍不住想按 C-a C-e
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:30 · PVG 22:30 · LAX 06:30 · JFK 09:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.