Sublimetext3 Sublime Text 3中视图的本地键绑定

Sublimetext3 Sublime Text 3中视图的本地键绑定,sublimetext3,Sublimetext3,是否可以配置仅在给定视图中处于活动状态的密钥绑定?来自插件?它在除所选视图之外的所有其他视图中都应处于非活动状态。这可以通过键绑定中的上下文来实现,该键绑定仅在非常特定的情况下才使绑定处于活动状态,并且根据您的需要,您甚至不需要特殊的插件来实现(尽管听起来像是针对您的情况) 作为简要概述,键绑定可以选择性地包含一个或多个上下文,用于确定绑定是否应处于活动状态。如果对同一个键应用了多个上下文,则必须在激活绑定之前满足所有上下文。可以将相同的键序列绑定到多个命令(或同一命令的变体),只要它们具有消除

是否可以配置仅在给定视图中处于活动状态的密钥绑定?来自插件?它在除所选视图之外的所有其他视图中都应处于非活动状态。

这可以通过键绑定中的
上下文来实现,该键绑定仅在非常特定的情况下才使绑定处于活动状态,并且根据您的需要,您甚至不需要特殊的插件来实现(尽管听起来像是针对您的情况)

作为简要概述,键绑定可以选择性地包含一个或多个
上下文
,用于确定绑定是否应处于活动状态。如果对同一个键应用了多个上下文,则必须在激活绑定之前满足所有上下文。可以将相同的键序列绑定到多个命令(或同一命令的变体),只要它们具有消除歧义的
context

如果有多个键绑定到同一个键,则会按顺序考虑它们(从上次定义的绑定开始并向上移动),直到看到一个具有应用它的上下文的键,或者看到一个没有上下文的键。因此,绑定的顺序可能很重要;把最具体的放在文件后面,最不具体的放在文件后面

例如,给定此密钥绑定:

{“键”:[“ctrl+shift+h”],
“命令”:“回声”,
“args”:{“msg”:“已触发密钥绑定”},
“背景”:[
{“key”:“setting.\u my\u setting”,“operator”:“equal”,“operator”:true},
],
},
此绑定仅在设置
\u my_setting
的布尔值为
true
的位置激活;如果该值为
false
或未设置该设置,则绑定未激活

因此,最初绑定将不处于活动状态,按下该键将触发任何其他恰好绑定到此键序列的命令

但是,如果要打开控制台并运行:

view.settings().set(“\u我的设置”,True)
现在,绑定在您执行该操作时所关注的任何文件中都处于活动状态,但在其他任何地方都处于禁用状态

设置的名称或它的交互方式没有什么神奇之处,除了这个上下文(内置于Sublime中)只能用于布尔设置。因此,它特别遵循设置的层次结构,您可以在以下一个或多个位置添加设置:

  • 首选项。升华设置
    使绑定在任何地方都处于活动/非活动状态
  • 特定于项目的设置,使绑定在特定窗口中包含的文件中处于活动/非活动状态
  • 特定于语法的设置,使绑定在特定类型的文件中处于活动/非活动状态
  • 在视图设置中(如上面插件中的示例),使绑定在特定视图中处于活动/非活动状态
列表中越靠下的项越快覆盖项(因此
view
settings压倒一切,语法设置压倒project和defaults,等等)

要实现更细粒度的控制或使用除布尔设置以外的其他设置,您需要在插件中实现
EventListener
ViewEventListener
,并处理
on_query_context
事件,该事件允许您创建用于绑定的自定义上下文

有关这方面的更多信息,请参阅;您也可以在上查看此视频(免责声明:我是此视频的作者)