惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
S
Securelist
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
Martin Fowler
Martin Fowler
量子位
D
Docker
G
Google Developers Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
U
Unit 42
S
Secure Thoughts
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
K
Kaspersky official blog
NISL@THU
NISL@THU
T
Tailwind CSS Blog
I
Intezer
T
Threat Research - Cisco Blogs
P
Privacy & Cybersecurity Law Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
Vercel News
Vercel News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Fortinet All Blogs
W
WeLiveSecurity
C
Cisco Blogs
Security Latest
Security Latest
PCI Perspectives
PCI Perspectives
L
LangChain Blog
P
Palo Alto Networks Blog
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
Help Net Security
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
Project Zero
Project Zero
G
GRAHAM CLULEY
Recent Commits to openclaw:main
Recent Commits to openclaw:main
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
Lohrmann on Cybersecurity
Cloudbric
Cloudbric
D
Darknet – Hacking Tools, Hacker News & Cyber Security

Dvel's Blog

Rime 全拼双拼混输 CHD 油猴脚本:每日签到自动答题 Rime 配置:雾凇拼音 Hammerspoon 自动切换输入法 修复 Hugo 本地图片的累计布局偏移(CLS)问题 macOS 利用 Karabiner 修改 Emacs 键位为 Vim 键位 Surge 配置 汉字的混乱 Netflix 中英双语字幕的好办法 优化 Rime 英文输入体验 判断字符是否为简体字或繁体字 Cloudflare 转入域名提示「出现了问题。请重试转移此域。尚未向您收费。」 图片压缩:Squoosh、TinyPNG、ImageOptim、WebP macOS grep + sed 批量替换多个文件的内容 在 macOS 根目录创建文件夹 博客图床小妙招 折腾 Hugo & PaperMod 主题 利用 Cloudflare Workers 进行批量 301 重定向 将博客部署在 Cloudflare Pages Alfred File Navigation(文件导航器)详解 在 Hugo Goldmark Markdown 中设置以新标签打开链接 日期与时间(UTC、GMT、时间戳、时区) 让 Alfred 以新标签的方式打开 Finder 用 git filter-branch 给 Git 仓库瘦身 qBittorrent 设置教程 联通光猫破解+桥接记录 配置 Mac 终端走代理 Steam for Mac 中文游戏推荐 我的 Mac 软件/工具列表 《Flask Web 开发》笔记 用 sleepwatcher 让 Mac 在睡眠及唤醒时自动执行一些脚本 解决 pyenv 导致的 brew warning 《SQL 必知必会》笔记 Git 自总结 Python 异步 IO 笔记 再见,双点医院! 用 CloudXNS 解决 CNAME 与 MX 记录冲突 你好,Hugo! 为 Mac 打造 zsh command line 环境 新 Mac 新装修 秦皇岛暑期自驾的烦恼 苹果公司开发者账号申请流程 UIScrollView 中使用 Masonry 解决 CocoaPods 的类库 import 没有提示 iOS 使用 CocoaPods 的快速回顾 GitBook 简单生成本地静态 HTML 的方法 你好, Hexo! About
macOS 修改 Emacs 键位为 Vim 键位
Dvel · 2022-11-24 · via Dvel's Blog

macOS 默认在文本编辑中使用 pnbf 来进行上下左右,还有一些其他键位,但我习惯使用 Vim 的 hjkl 来移动。

我已经在 Vim 中设置好了,但希望这个键位应用到全局。

通过修改 DefaultKeyBinding.dict 来完成。

但只能适配一般输入框的快捷键,很多编辑器都还是老样子,无法覆盖。

比如 Firefox 的输入框、Alfred 的输入框是可以的,但是很多网页编辑框、终端、代码编辑器、Typora 等等还是老键位。

因为这个方法的不一致性,我已经改用 Karabiner 了。

通过 Karabiner 修改,则会真·强制·全局。

不过还是记录一下这种方法。

下一篇博文:macOS 利用 Karabiner 修改 Emacs 键位为 Vim 键位

macOS 默认的 Emacs-like 键位

官方支持文档:Mac 键盘快捷键

Control-A:移至行或段落的开头。

Control-E:移至行或段落的末尾。

Control-F:向前移动一个字符。

Control-B:向后移动一个字符。

Control-L:将光标或所选内容置于可见区域中央。

Control-P:上移一行。

Control-N:下移一行。

Control-O:在插入点后新插入一行。

Control-T:将插入点后面的字符与插入点前面的字符交换。

Control-H:删除插入点左边的字符。也可以使用 Delete 键。

Control-D:删除插入点右边的字符。也可以使用 Fn-Delete。

Control-K:删除插入点与行或段落末尾处之间的文本。

键位映射文件

默认的键位设置在:

/System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict

可以自己增加一个来覆盖默认的:(默认没有 KeyBindings 目录,可以自己创建)

~/Library/KeyBindings/DefaultKeyBinding.dict

查看 StandardKeyBinding.dict 的方法:

可以用 Xcode 打开,选择文件类型为 Property List Binary。

或者可以用 plutil 转换为 XML:

plutil -convert xml1 -o StandardKeyBinding.xml  /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict

转换完成后,可以得到类似下面这样的代码:

	<key>^a</key>
	<string>moveToBeginningOfParagraph:</string>
	<key>^b</key>
	<string>moveBackward:</string>
	<key>^d</key>
	<string>deleteForward:</string>
	<key>^e</key>
	<string>moveToEndOfParagraph:</string>
	<key>^f</key>
	<string>moveForward:</string>
	<key>^h</key>
	<string>deleteBackward:</string>
	<key>^k</key>
	<string>deleteToEndOfParagraph:</string>
	<key>^l</key>
	<string>centerSelectionInVisibleArea:</string>
	<key>^n</key>
	<string>moveDown:</string>
字符 按键
"@" Command
"^" Control
"~" Option

^A 这样的代表 Control + Shift + a。

修改示例

我自己的习惯,除了 hjkl 移动还改了一点别的。

创建并编辑 ~/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:";
}

保存后需要重启 App 来查看效果。

参考:

Cocoa Event Handling Guide

NSStandardKeyBindingResponding

Customizing the Cocoa Text System

What are the control keys available when working in a text field?