如何在Sublime Text

时间:2015-09-10 20:58:44

标签: syntax sublimetext3 key-bindings prettify jscs

我在编辑JavaScript时花了太多时间精确地研究如何覆盖特定的代码格式化工具而不是另一个代码格式化工具,而留下另一个用于格式化HTML和CSS。 < / p>

我在SO或其他地方没有找到任何完整的说明,所以我决定在这里发布Q&amp; A.

问题:

HTMLPrettify侦听特定的键绑定(super-shift-h),然后根据文件语法运行Prettify脚本变体。它处理HTML,CSS,JS和JSON。

我想要JSCS

我发现JSCS并且喜欢它很容易匹配和处理不仅基础知识,而且还有很多编码风格的选项。

对我而言,最酷的是用户可以简单地选择一个众所周知的JS风格指南,如airbnb或jquery,JSCS将其格式化的样式与该风格相匹配。

无论如何,我想用它代替。但我想保留HTML和CSS的HTMLPrettify,并且找不到为JS和JSON选择一个的方法,而是为HTML和CSS选择另一个。

1 个答案:

答案 0 :(得分:1)

说明

HTMLPrettify在其自己的配置文件中捕获密钥绑定,该文件在之后加载,因此会覆盖默认和用户密钥绑定。

JSCS默认使用与HTMLPrettify相同的键绑定,因此它最终成为一个争夺谁被调用的斗争。

要解决此问题,必须从HTMLPrettify的设置中删除键绑定,然后添加一些使用条件上下文查看语法类型的自定义用户键绑定。

将HTMLPrettify设置中的第一个选项更改为:

[{
  "keys": [""],
  "command": "htmlprettify"
},

然后将以下内容添加到SublimeText中的用户密钥绑定文件中:

[
  { 
    "keys": ["super+shift+h"], 
    "command": "format_javascript",
    "context": [
      { "key": "selector", "operator": "equal", "operand": "source.js" },
      { "key": "selector", "operator": "equal", "operand": "source.json" },
    ]
  },
  { 
    "keys": ["super+shift+h"], 
    "command": "htmlprettify",
    "context": [
      { "key": "selector", "operator": "not_equal", "operand": "source.js" },
      { "key": "selector", "operator": "not_equal", "operand": "source.json" },
    ]
  }
]

请注意&#34; not_equal&#34;部分是必要的,因为Sublime Text(至少在OSX上)似乎有一个错误,它必须明确地排除任何其他匹配,或者它将简单(在这种情况下)运行JSCS对抗一切。

我还没有对它进行测试,但我想如果你想要包含其他格式化程序,你可以使用&#34;等于&#34;每个模式的模式,与源类型匹配,然后使用&#34; not_equal&#34;模式匹配空命令。

个人注意事项

代码格式化是一种非常常见的功能。用于格式化特定语法的特定引擎应该与键绑定分离,以便单个键绑定可以用于所有&#34;格式&#34;命令和语法将根据用户分配的引擎来确定使用哪个引擎。

这很可能很容易成为SublimeText插件。或者,按照惯例,插件开发人员可以简单地小心地将上下文添加到他们的键绑定中并保留绑定&#34;命名空间&#34;打开其他语法。