【问题标题】:Sublime Text Default HTML commentsSublime Text 默认 HTML 注释
【发布时间】:2018-11-23 12:35:19
【问题描述】:

当我安装一个 PHP Twig 语法包时,它似乎将默认 HTML 注释输出从 <!-- … --> 更改为 {# … #}

所以,我删除了包,但当我按下键盘快捷键时,它仍然将注释输出为 Twig。

顺便说一句,键映射是正确的 (super+alt+forward_slash),但它返回的是 Twig 格式的注释而不是 HTML 注释。

如何返回<!-- … --> ???

【问题讨论】:

  • 您提到键绑定是正确的;它映射到什么命令?当您从菜单中执行此操作时,您会得到相同的结果吗?发生这种情况的文件使用什么语法?它是否也发生在 HTML 文件中?
  • @OdatNurd 使用 Sublime 的默认键映射:{ "keys": ["super+forward_slash"], "command": "toggle_comment", "args": { "block": false } }, { "keys": ["super+alt+forward_slash"], "command": "toggle_comment", "args": { "block": true } } 是的,我从菜单中得到相同的结果。它发生在任何扩展名为 .php 和 .html 的文件中
  • 我还想关注 Wes Bos 的 this tutorial,我可以解决它。但是,ST3 中似乎不存在 HTML.tmLanguage 文件。也尝试使用包资源查看器找到它。这是我安装的包,它似乎把 HTML cmets 搞砸了。 https://packagecontrol.io/packages/PHP-Twig
  • 那个教程错了; tmLanguage 文件用于指定语法高亮。您找不到该文件,因为它现在是 sublime-syntax 文件。
  • 谢谢@OdatNurd。我解决了这个问题。这是 Nunjucks 扩展包。它添加了自己的 sn-ps。我已经在 Github 上发布了这个问题。 github.com/thecodechef/nunjucks-extended/issues/4

标签: twig comments sublimetext3 keyboard-shortcuts


【解决方案1】:

您的软件包安装或删除似乎有些问题,因此需要进行一些调查以解决问题。

对于背景,用于 cmets 的一个或多个字符(单行或块)的设置信息由 tmPreferences 类型的文件提供(而不是 tmLanguage,正如您链接的教程中错误描述的那样在你的问题的 cmets 中)。

文件的名称和它所在的包无关紧要(除了它们控制文件的加载顺序),只有所述文件的内容。

您安装的包 (PHP-Twig) 包含文件 Preferences/Comments.tmPreferences 以设置 cmets 以在 twig 文件中使用。如this commit 所示,该文件包含控制 cmets 的信息子集:

<key>scope</key>
<string>text.html.twig</string>
<key>settings</key>
<dict>
    <key>shellVariables</key>
    <array>
        <dict>
            <key>name</key>
            <string>TM_COMMENT_START</string>
            <key>value</key>
            <string>{# </string>
        </dict>
        <dict>
            <key>name</key>
            <string>TM_COMMENT_END</string>
            <key>value</key>
            <string> #}</string>
        </dict>
    </array>
</dict>

这表示对于语法范围 text.html.twigshellVariables 设置 TM_COMMENT_STARTTM_COMMENT_STOP 分别是 {##}。有了这个,只要光标位置的scopetext.html.twig 匹配并且您触发了注释命令,这些都将用于包装注释部分。

话虽如此,这些注释字符只应在范围匹配text.html.twig 时应用。常规 HTML 文件中使用的范围是 text.html.basic(假设您使用的是 Sublime 附带的 HTML 包),因此它不应该匹配,并且不应该在那里使用 cmets。

您可以使用菜单中的Tools &gt; Developer &gt; Show Scope Name... 或菜单中可见的键绑定来检查任何特定位置的范围以进行验证。

如果你看到这些 cmets 也出现在常规 HTML 文件中,你可能有意或无意地将 Sublime 设置为对 HTML 文件使用 twig 语法,你可以通过检查状态栏的右侧来检查它告诉你正在使用的语法。

另一方面,当您删除软件包时,问题也应该自行解决,因为这会删除提供评论设置的tmPreferences 文件。

我会执行以下检查,看看它们是否有任何影响:

  1. 打开一个 HTML 文件并确认状态栏显示它是 HTML 类型的文件,而不是 HTML (Twig) 或其他类型的文件。如果是其他问题,请使用菜单中的View &gt; Syntax &gt; Open all with current syntax as 将其设置回 HTML,看看是否可以解决 HTML 文件的问题。

  2. "PHP-Twig" 添加到您的首选项中的ignored_packages 设置中,看看是否有帮助。

如果文件类型错误或将PHP-Twig 添加到忽略的包列表中解决了问题,则仍然安装包。如果您使用 Package Control 安装它,请尝试再次删除它,看看是否有任何影响(检查 Sublime 控制台是否有错误,以防由于某种原因删除失败)。

您也可以从菜单中选择Preferences &gt; Browse Packages 以打开 Sublime 存储所有未打包包的位置。 PHP-Twig 不应该解压安装,所以如果你看到一个具有该名称的文件夹,请将其删除或将其从该文件夹中移开,这样 Sublime 就看不到它。

Packages 文件夹,在文件层次结构中上一层,然后进入Installed packages 文件夹;这是作为sublime-package 文件安装的用户包(大多数包属于此类别)的存储位置,并验证没有PHP-Twig.sublime-package 文件。如上所述,如果您看到该名称的文件,请将其从该文件夹中移开,这样 Sublime 就看不到它,看看是否有帮助。

如果没有想到唯一明显的事情就是在某处流浪tmPreferences 文件。这种东西最可能的位置是Packages 文件夹中的一个文件夹(我们在上面检查的第一个)。

【讨论】:

  • Nunjucks 和 Twig 使用相同的注释格式。由于我最后安装了 Twig 包,所以我认为它是 Twig。删除 Nunjucks 扩展包后,一切正常。该问题已发布。 github.com/thecodechef/nunjucks-extended/issues/4 再次感谢您的反馈。
猜你喜欢
  • 2014-11-12
  • 2016-04-02
  • 1970-01-01
  • 2017-02-20
  • 2015-09-27
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
相关资源
最近更新 更多