sublimetext3 - 崇高着色括号之间的所有内容与外部颜色不同
问题描述
在 Sublime 语法文件中,我可以使用如下命令为所有硬括号和里面的所有内容着色:
- match: '\[.*?\]'
scope: keyword.control
如果我想为括号内的所有内容涂上不同的颜色,我尝试了这样的方法:
- match: '\['
scope: variable.function
comment: Images
push:
- meta_scope: constant.numeric
- match: \]
pop: true
问题是它会将最后一个括号着色为与内部相同的颜色。知道如何使最后一个括号与起始括号的颜色相同吗?
解决方案
在Syntax documentation中,它这样说(强调我的):
- 元范围。这会将给定范围分配给此上下文中的所有文本,包括将上下文推入堆栈并将其弹出的模式。
- 元内容范围。如上所述,但不适用于触发上下文的文本(例如,在上面的字符串示例中,内容范围不会应用于引号字符)。
在您的第二个示例中,您正在使用meta_scope
,这会导致从堆栈中弹出上下文的匹配也应用此范围。如果您将其交换为meta_content_scope
,则不会发生这种情况。但是,在这种情况下,根本没有对字符应用特定范围]
,因此它看起来与标准文本颜色相同。
为了解决这个问题,您还可以对它应用与最初推送上下文的范围相同的范围。例如:
- match: '\['
scope: variable.function
comment: Images
push:
- meta_content_scope: constant.numeric
- match: \]
scope: variable.function
pop: true
从技术上讲,如果您所追求的只是颜色,那只是scope
必需的,并且可能会做您想要的。然而,使用它也“更干净” meta_content_scope
,以避免它仍然可能基于错误的范围着色。
推荐阅读
- python - 在 pandas SQL 查询中使用日期范围 where 子句返回一个空数据框
- php - 此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE。在添加字段时
- f# - 为什么我在 F# 的匹配语句中收到“未使用值”警告
- python - 为什么我收到 ModuleNotFoundError: No module named 'pyperclip'?
- sql - 如何在具有 WHERE 子句的 SQL 中查找最大列值?
- google-app-engine - 无法在我的 Google App Engine 服务器上下载 1.34GB 的文件
- python - 即使我使用反向范围,仍然会发生“Python 中的列表索引超出范围”
- node.js - 当我为nodejs选择数据时如何按相应的数据列出
- python - 使用 Python Beautifulsoup 从特定页面提取数据
- java - 如何在 libgdx 中使用 textarea?