刚接触 Mac 时,最喜欢的就是 Mac 所有输入框都有类似 Emacs 的快捷键(因为有过 vim 和 Emacs 经验),日常也经常使用这些快捷键。
一直不知道原来这些快捷键还可以自定义,今天因为 iTerm2 里无法使用 Option + .
快捷键的问题,搜索到一个回答提到了怎么自定义这些快捷键。
苹果关于 Cocoa 的文档
下面是我的配置(在 MWeb 和 TextMate 里测试通过):
// 在 ~/Library/KeyBindings/ 目录下添加 DefaultKeyBinding.dict 文件,这个目录默认不存在,先创建
// targetDir=~/Library/KeyBindings; [ -d $targetDir ] || mkdir $targetDir; ln -sf ~/Dropbox/conf/DefaultKeyBinding.dict $targetDir
// 此文件更改后,完全退出某个 app,重新打开即可使用
{
/* Additional Emacs bindings */
"~f" = "moveWordForward:";
"~b" = "moveWordBackward:";
"~d" = "deleteWordForward:";
"~h" = "deleteWordBackward:";
"~<" = "moveToBeginningOfDocument:";
"~>" = "moveToEndOfDocument:";
"~v" = "pageUp:"; /* ^v pageDown */
// selections
"~F" = "moveWordForwardAndModifySelection:";
"~B" = "moveWordBackwardAndModifySelection:";
"^," = "moveToBeginningOfDocumentAndModifySelection:"; /* select to beginning */
"^." = "moveToEndOfDocumentAndModifySelection:"; /* select to ending */
"~l" = "selectLine:";
// compounds
// "~t" = "moveToBeginningOfLine:"; // this two line is for debugging
// "~y" = "deleteToEndOfLine:";
"^K" = ("moveToBeginningOfLine:", "deleteToEndOfLine:", "deleteForward:");
"~j" = ("moveToBeginningOfLine:", "deleteToEndOfLine:", "deleteForward:", "moveDown:", "yank:", "insertNewlineIgnoringFieldEditor:", "moveBackward:");
"~k" = ("moveToBeginningOfLine:", "deleteToEndOfLine:", "deleteBackward:", "moveUp:", "moveToEndOfLine:", "insertNewlineIgnoringFieldEditor:", "yank:");
"~J" = ("moveToBeginningOfLine:", "deleteToEndOfLine:", "yank:", "insertNewlineIgnoringFieldEditor:", "yank:");
"~K" = ("moveToBeginningOfLine:", "deleteToEndOfLine:", "yank:", "insertNewlineIgnoringFieldEditor:", "yank:", "moveUp:");
// "~K" = ("moveToBeginningOfLine:", "deleteToEndOfLine:", "yank:", "moveToBeginningOfLine:", "yank:", "insertNewlineIgnoringFieldEditor:", "moveBackward:");
}
Cocoa 默认快捷键定义在(可以看看哪些不知道的):
/System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict
Option + .
问题Preferences - Profiles - Keys
将下面的 Left ⌥ Key
改为 Esc+
就可以了
Cocoa 常用命令
原文地址: https://uedsky.com/2019-08/mac-custom-cocoa-text-system/
1
yangg OP |
2
tsohgdivil 2019-08-06 22:31:13 +08:00
我一直都是用 Karabiner-Elements 的,没想到还能这样,谢谢分享
|
3
lululau 2019-08-06 22:52:27 +08:00 via iPhone
这个文件用 JSON 格式,你试试点击任意应用程序的 Help 菜单,程序会不会崩溃,之前遇到过这个问题,改回 binary 格式就好了
|
4
lululau 2019-08-06 22:55:52 +08:00
JSON 格式 => 文本格式
|
5
yangg OP @lululau 文本没问题哦,
原文说 Specified in an dictionary file that must have an extension of .dict; the format of this file should be an XML property list, but the text system can also understand old-style (NeXT era) property lists. To customize bindings, you create a file named DefaultKeyBinding.dict in ~/Library/KeyBindings/ and specify bindings to augment or replace the standard bindings. You may use the standard bindings file as a template. It is recommended that you use the Property List Editor application to edit a bindings dictionary. You may use another application such as TextEdit or Xcode, but if you do you must ensure the encoding of the saved file is UTF8. 就是一个字典文件,用 utf8 就行了,我直接用 textmate 编辑的 |