command+shift+?
的正常mac行为是打开帮助菜单搜索,无需鼠标就可以非常方便地执行菜单命令。
不幸的是,我安装的sublime文本包已将该键绑定映射到设置菜单。这是包Default (OSX).sublime-keymap
文件
[
{ "keys": ["super+shift+/"], "command": "open_settings" }
]
基于与How to unbind a key binding in Sublime Text 2?的相关
我继续在我的用户键绑定中覆盖他们的键绑定。这是我的用户Default (OSX).sublime-keymap
文件。
[
{ "keys": ["super+shift+/"], "command": "noop" }
]
按下按键顺序时,这会使打开的设置停止打开。如果我对命令使用unbound
,则行为相同,不包括命令文件包keybinding。但是,它不会冒泡到Mac层,从而打开帮助搜索菜单。
我可以通过直接修改软件包的密钥绑定文件来按照我想要的方式工作,但是下次软件包升级时会被覆盖。
是否有一种支持的方法可以删除键绑定而不会阻止它冒泡到操作系统?
答案 0 :(得分:1)
以Sublime不会以任何方式做出反应的方式完全删除键绑定的唯一方法是将其从sublime-keymap
文件中删除。无论您是要从Sublime附带的Default/Default (PLATFORM).sublime-keymap
(每个平台都有一个)中完全删除文件,以删除默认密钥绑定以及可能由第三方软件包添加的文件,都是如此。
只要密钥保留在sublime-keymap
的任何位置,Sublime就会看到它并尝试对其执行某些操作,即使密钥绑定到不存在的命令,例如{{1} (尽管这是阻止默认密钥执行任何操作的好方法,如果这是你的最终目标)。
解决问题的一种方法是直接修改打包文件本身,正如您已经提到的那样。在大多数情况下,这意味着解压缩相关的noop
文件(只是一个sublime-package
文件),修改文件的内容,然后重新打包。
正如您已经指出的那样,这不是一个好方法,因为当包更新时,整个zip
文件会被删除,因此您的更改也将被丢弃。
更安全的方法是创建一个包覆盖文件。这仅在相关软件包安装为sublime-package
文件时才有效,该文件涵盖Sublime附带的所有软件包以及大多数第三方软件包。
要执行此操作,您需要在Sublime sublime-package
文件夹中创建与包名称相同的文件夹,您可以通过首选项菜单项Packages
获取该文件夹。完成后,只提取您要覆盖的文件并将其放入该文件夹,然后根据需要进行编辑。
当Sublime从Browse Packages...
文件加载包时,因为它加载每个文件,它会检查sublime-package
文件夹中是否存在任何类似命名的“解包”文件。如果存在这样的文件,则会忽略Packages/PackageName/
文件中的版本,而是使用解压缩的文件。
这意味着即使软件包已更新,由于您的解压缩版本仍然存在,它仍将被使用,因此您的更改将保留在原位。
创建此类文件的最简单方法是使用PackageResourceViewer包。您可以使用命令面板中的sublime-package
命令查找并打开有问题的文件。如果您对文件进行了更改并保存,PRV将自动为您创建覆盖。
这个过程有几点需要注意:
如果已安装的软件包已在PackageResourceViewer: Open Resource
文件夹中解压缩,则无法创建覆盖。在这种情况下,除了在更新文件时警惕地重新修改文件,除此之外别无他法。
大多数软件包都不受此限制,因为实际上很少需要以这种方式安装(只有包含需要在Sublime之外公开的文件的软件包需要以这种方式安装)。
另请注意,Sublime Text 2仅将软件包安装为解压缩,因此在特定情况下您也无法执行此操作。
当存在包覆盖时,无论如何,它总是用来代替同名的压缩文件。这有一个令人遗憾的副作用,如果软件包更新实际上修改了您正以任何方式更新的文件,那么这些更改会在没有警告的情况下被屏蔽。
我是那个编写软件包的人,是Sublime的OverrideAudit软件包可以通过检查每次更新软件包以查看软件包的版本来发出警告打包文件比被覆盖的版本更新,以便您知道这种情况正在发生并且可以采取适当的措施。
你的问题是标记Sublime Text 2和Sublime Text 3.在Sublime Text 2的情况下,上面关于需要完全删除键绑定以允许操作系统看到它的信息仍然成立。
但据我所知,Sublime Text 2不支持包覆盖的想法,因为它总是安装所有解包的包。因此,在这种特殊情况下,唯一的解决方案是修改打包文件并留意更改。
此时Sublime Text 3正式发布,没有太多令人信服的理由继续使用ST2。如果您在2013年中后期或之后的某个时间购买了ST2许可证,则您的许可证应对ST3有效。
这一点尤其重要,因为不再支持ST2,而当Apple取消Python 2.6时,各种Sublime软件包将不再适用。