在macOS中自定义Option-Delete以及其他与单词相关的快捷方式的单词边界?

问题描述

是否可以将⌥⌫(选项+删除)的行为更改为包含某些字符(例如句点)作为单词边界?

例如,在some.variable中,我想让⌥⌫最多删除句点,但当前它删除了整个字符串。下面的截屏视频显示了使用⌥⇧←的行为。

Screencast GIF

解决方法

自可可时代以来,我一直在寻找解决此问题的方法,据我所知,没有办法自定义“Option-Delete”字分隔符(字边界)列表。除了我自己的实验之外,我的这个结论主要基于可在以下 3 个 URL(从最旧到最近更新)中找到的大量 MacOS 键绑定修改:

  1. Customizing the Cocoa Text System (circa 2006)
  2. DefaultKeybinding.dict (circa 2016,some info previously at the URL "lri.me")
  3. Keybindings -- BrettTerpstra.com (last updated 2018)

AFAIK,MacOS 上的字边界默认为空白且无法更改。 [如果最近 MacOS 文本输入系统发生了根本性的变化,则此结论无效]。

许多 MacOS 键盘快捷键都基于 eMacs 风格的“键盘和弦”,而不是 Vim 风格的“模态编辑”,这已经不是什么秘密了。实际上,上面引用的大部分 Keybinding 工作都涉及重新映射这些和弦。 Vim 当然以具有可定制的分隔符列表而闻名,它是(例如)wWbB 之间差异词移动的基础(见vimhelp.org)。

有一些扩展试图将“Vim 风格”的编辑引入 MacOS,其中之一是 Karabiner。 Karabiner(现在重写/更新为 Karabiner-Elements)曾经有一个名为“Ubiquitous_Vim”的模式。然而,如果没有操作系统级别的“钩子”,个人测试表明(例如)通过 bB 向后移动的工作方式相同(即 Vim word 和 Vim { 之间没有区别) {1}},参见 this StackOverflow post)。

虽然我无法找到修改 MacOS 默认“词边界”列表的方法,但如果 Vim 风格的编辑确实吸引您,那么您可以尝试安装一个项目,例如 Vim-Anywhere,它使您能够 1. 每当您需要输入文本时,使用 MacOS 键盘快捷键打开 Vim 窗口,以及 2. 当您关闭 Vim 窗口时,将自动将您的文本复制到 MacOS 系统剪贴板。请参阅这篇 OSTechNix 文章:"How To Use Vim Editor To Input Text Anywhere" 了解更多信息。