- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究自定义语法高亮显示,并从 HTML 语法中复制了一些片段,因为这篇文章非常相似。我一直在尝试弄清楚如何突出显示标签内的文本。这是我的定义:
- match: "(</?)([a-zA-Z0-9:]+)"
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.other.html
push:
- meta_scope: meta.tag.other.html
- match: '>'
scope: punctuation.definition.tag.end.html
pop: true
- match: '.'
scope: string.quoted.single.html
示例文本:
<file bash>
Some bash code block
Some bash code block
</file>
我的代码突出显示了括号 <>
, file
和 bash
关键字,但我不知道如何为里面的 block 添加颜色。最终我想把它作为 block 评论或类似的东西,这样它就会脱颖而出。有什么建议吗?
我需要一个解决方案来避免为没有结束标记的标记添加注释突出显示。例如,我正在使用的标记中有某些标签不使用关闭,例如 <tag without close>
没有 </tag>
.有什么方法可以在正则表达式中添加排除项,使其仅在存在打开和关闭标记时才起作用,但在只有打开标记时不起作用?
<tag without close>
This should not be a comment.
<file bash>
This should be a comment.
</file>
This also should not be a comment.
只会使用一小部分标签,例如 <tag>
以上,主要用于元数据。
最佳答案
一种方式,松散地基于 interiors of both <style>
and <script>
are managed 的方式, 是使用 with_prototype
它有一个 pop
.
- match: '(?:^\s+)?(<)([a-zA-Z0-9:]+)\b(?![^>]*/>)'
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.other.html
push:
- match: '(</)(\2)(>)'
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.other.html
3: punctuation.definition.tag.end.html
pop: true
- match: '>'
scope: punctuation.definition.tag.end.html
push:
- match: '.'
scope: comment.block.html
with_prototype:
- match: (?=</\2)
pop: true
- include: main
- match: '.'
scope: string.quoted.single.html
请注意 ([a-zA-Z0-9:]+)
正如您在问题中所提到的,这里匹配任何有效的标签名称,并且 \2
用于稍后匹配该组,两者都在立即解耦match
条件和 with_prototype
健康)状况。 with_protoype
定义应用于当前上下文中所有内容的模式,因此我们在这里使用它来确保我们 pop
一旦我们到达 </file>
,评论式的高亮显示,而不是被视为评论的一部分。
在with_prototype
内, - include: main
声明确保您的评论内容中的任何标签都像外部 <file>
一样标签。例如,<hello>
下面的行为与 <file>
相同.
<file bash>
Some bash code block
<hello stuff>
Some bash code block
</hello>
Some bash code block
</file>
如果您的标签没有匹配的结束标签,您可以通过为堆栈更高层的标签定义特定行为来覆盖此行为,如下所示:
- match: '(?:^\s+)?(<)(hello)\b(?![^>]*/>)'
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.other.html
push:
- match: '>'
scope: punctuation.definition.tag.end.html
pop: true
- match: '.'
scope: string.quoted.single.html
前提是早于 match: '(?:^\s+)?(<)([a-zA-Z0-9:]+)\b(?![^>]*/>)'
线,任何<hello>
标签不会调用评论式突出显示。
此文本不是 comment.block.html。一些 bash 代码块一些 bash 代码块一些 bash 代码块
关于sublimetext3 - Sublime Text 自定义语法高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39879737/
我可能遗漏了明显的,但似乎无法解决这个相当简单和典型的案例(在 Debian 或 XP 上使用 v3 build 3022,以防万一): 启动 Sublime Text 打开一个项目“myprj”,在
在 Sublime 的精神中,我知道即使您以后不将更改保存到一个文件中,也可以从上次中断的地方开始。在保存文件之前,我在sublime中打开了一个新标签,并关闭了该应用程序。升华是否将临时文件保存在计
我有两个关于 Sublime Text Editor 2 的问题。 我的第一个问题是,我在 Packages/User 文件夹中保存了几个不同的 .tmLanguage 文件(例如:Console.t
我在 Mac 上。 另外,需要注意的是,路径段为“Packages/Solarized Color Scheme/Solarized (Dark).tmTheme”的文件在文件系统上任何地方都不存在。
我正在使用第三个 Sublime 版本,我想使用这个 CSS 梳子:https://github.com/vitaligo/CSScomb.sublime-settings/blob/master/C
我正在尝试创建一个 Sublime Text 3 插件,它从 .html、.css、.js 和 .php 等文件复制代码,然后将其粘贴到 txt 文档中。 我的问题是,有时当我从包含大量代码的文档中复
使用 Anaconda IDE package 运行 Sublime Text 3在 Mac OS X 上,当我编辑 .sublime-project 文件时,由于某种原因,某些更改将在一段时间后被删
这是我的 Preferences.sublime-settings文件: { "bold_folder_labels": true, "highlight_line": true,
我正在寻找一种方法来右键单击 Windows 10 中的文件,选择“打开方式”->“Sublime Text”,然后出现一个新的 Sublime Text 窗口。 如果 Sublime 已经打开,默认
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我根本不想要它们,更喜欢 git 命令行,但它们被添加到我的命令中,就好像它们已安装一样,即使我从未安装过 sublime merge。 有没有办法从 sublime text 命令面板中完全删除它们
我根本不想要它们,更喜欢 git 命令行,但它们被添加到我的命令中,就好像它们已安装一样,即使我从未安装过 sublime merge。 有没有办法从 sublime text 命令面板中完全删除它们
我在 Ubuntu 12.04 LTS 上。调用 sublime foo.txt 通常会在 Sublime Text 2 中打开 foo.txt。最近我安装了 Sublime Text 3 .除此之外
有没有办法在Sublime Text Build中使用Windows变量?我有一个S搭建的系统:。有没有办法在Sublime Text Build中使用Windows变量?我有一个S搭建的系统:。我会
当我在 Sublime Repl 控制台 (Python) 中输入并按回车键运行命令时,我得到了 super 烦人的自动完成接管并更改命令。 如何在 SublimeRepl 控制台中关闭此功能? 谢谢
我需要从 sublime text 2 迁移到 sublime text 3,以获得与我在 sublime text2 上安装的所有相同的配置/插件。 我安装了 sublime text 3,但它没有
Sublime Text 2 无法打开。我不断收到此错误: (Error trying to parse file: Unexpected character, expected a comma or
只是尝试在 Windows 8.1 上为我的 OpenGL 编码设置 sublime-build。 这就是我所拥有的: { "cmd": [ "gcc -o \"$file\" \"$file_bas
所以我有一个错误,当我尝试构建时,命令行显示: grunt-cli: The grunt command line interface. (v0.1.13) [Finished in 0.1s wit
我正在尝试安装 https://github.com/alek-sys/sublimetext_indentxml在 Sublime Text 3中。我读了 In Sublime Text 3 - c
我是一名优秀的程序员,十分优秀!