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 的编辑框又回到了原始键位。
1
lessMonologue 2022-11-24 13:36:26 +08:00 1
一直用 vim 的人,看到 pnbf 真的很难理解😂
|
2
Dvel OP @lessMonologue #1 我刚用 Vim ,主要就是 IdeaVim ,插入模式补全还得按 Ctrl + n 来选择。
在 JetBrains 上已经改好了,想着应用到全局。。。但是并不全局,那要不要习惯习惯 pnbf 🤔🤔🤔 |
3
yuhangch 2022-11-24 14:05:07 +08:00 2
可以试试 karabiner
https://www.notion.so/macOS-96862a7815924c659a0fdf82a74e77a1 >部分键位不能用于映射命令. 例如 `Option - u`, `Option - l`. 不同软件对这些快捷键的支持程度不同. 有些支持全部 (例如 Notes), 有些只支持一部分, 有些软件自身的快捷键会覆盖这些快捷键. |
4
jheroy 2022-11-24 15:33:59 +08:00
karabiner-elements, 然后导入 vi-mode 的配置, 保证全局有效.
|
5
flyJJ 2022-11-24 16:28:01 +08:00 1
@lessMonologue 我是从 vim 跳到 emacs 的,好像 pnbf 是有含义的,P 代表 previous ,N 代表 next ,B 代表 backward ,而 F 则代表 forward 。
|
6
Dvel OP @yuhangch #3 试了一下,这是真·全局,把 Vim 普通模式都覆盖了。
我已经设置了移动到行首行尾: ``` nnoremap <C-h> ^ nnoremap <C-l> $ ``` 还是被 karabiner 给覆盖成左右了。 DefaultKeyBinding.dict 是不太全局,karabiner 是过分全局 😓😓😓 |
7
lessMonologue 2022-11-25 15:12:18 +08:00
@flyJJ 其实是跟 vim 中 pnbf 的含义一样,比如 vim 中也有很多<C-p>,<C-n>配置。不过上下左右我还是喜欢 hjkl
|
8
Dvel OP @Dvel #6 修正一下说法。
Karabiner 可以设置单独 App ,或排除某 App 。 还支持 CapsLock 映射成 Ctrl ,单独按下是 Esc ,组合按下还是 Ctrl 的这种操作,这对 Vim 也太舒服了。 准备看看文档学习一下。。。 |
9
pocarisweat 2022-11-27 00:49:50 +08:00
我就不一样了,用 Vim 在命令模式里老忍不住想按 C-a C-e
|