如何在 Sublime Text 配色方案中显示给定范围的空白
How to show whitespace for given scope in a Sublime Text color scheme
有什么方法可以设置白色 space 在给定范围内可见吗?
我正在修改配色方案以符合我的喜好,并希望能够在给定范围内显示 spaces。我没有在 Sublime 网站的 color-scheme documentation 中看到任何暗示它可能的东西。
对于我的具体情况,我想还有其他有用的情况,我正在使用 Markdown 并想突出显示双 space 换行符。我可以设置背景,但这看起来不太正确。我希望能够让白色space 在这个小范围内可见,并更改前景色以使其突出。
对您的问题的简短回答是否定的;或者更确切地说,是的,但仅限于您已经发现的方式。
配色方案只能将 foreground/background 颜色应用于范围以及 bold/italic 字体粗细。因此,假设您正在使用的语法检测到一个特定范围,该范围用于您要突出显示的内容,配色方案唯一可以做的就是改变背景颜色以使其可见。
唯一可以原生渲染白色 space 的是 draw_white_space
设置,目前只允许您在任何地方关闭它,在任何地方打开它,或者只打开它对于选定的文本。在这种情况下,这并没有什么帮助。
尽管在插件领域中有类似的可能性(这些示例可以通过使用 View > Show Console
或 Ctrl+` 打开 Sublime 控制台并输入代码在那里;他们还假设您使用的是默认的 Markdown 语法):
view.add_regions("whitespace", view.find_by_selector("punctuation.definition.hard-line-break.markdown"), "comment", flags=sublime.DRAW_NO_FILL)
这将导致所有硬换行符都被勾勒出来,就好像它们是查找结果一样;颜色由范围选择(此处为 comment
);这将使它们可见而不会使整个字符位置具有背景颜色。
view.add_regions("whitespace", view.find_by_selector("punctuation.definition.hard-line-break.markdown"), "comment", "dot", flags=sublime.HIDDEN)
这将在以该范围结尾的行的间距中添加一个点(颜色为 comment
);您还可以将其与前面的示例结合起来以概述它们,并在装订线中引起注意。
style = '<style>.w { color: darkgray; }</style>'
content = '<body id="whitespace">' + style + '<span class="w">··</span></body>'
phantom_set = sublime.PhantomSet(view, "whitespace")
phantoms = [sublime.Phantom(r, content, sublime.LAYOUT_INLINE) for r in view.find_by_selector("punctuation.definition.hard-line-break.markdown")]
phantom_set.update(phantoms)
这使用 Sublime 的能力将内联 HTML 幻影应用到文档中,以便在实际白色 space 和之前的文本之间立即注入两个 unicode 中心点的小内联序列它。这里的内容可以是你喜欢的,只要你能生成合适的HTML;在此示例中,我们只是将颜色应用于文本。
这里的一个潜在缺点是您在内联 HTML 中看到的字符不被视为文档流的一部分;光标将在一个块中跳过它们,然后是实际的 whitespace.
此示例的结果如下所示:
走插件路线,您需要像 on_load()
这样的事件处理程序来在加载文件时应用这些事件,并需要 on_modified()
在对缓冲区进行修改后重新更新它们。可能存在也可能不存在已经实现此功能的包。
有什么方法可以设置白色 space 在给定范围内可见吗?
我正在修改配色方案以符合我的喜好,并希望能够在给定范围内显示 spaces。我没有在 Sublime 网站的 color-scheme documentation 中看到任何暗示它可能的东西。
对于我的具体情况,我想还有其他有用的情况,我正在使用 Markdown 并想突出显示双 space 换行符。我可以设置背景,但这看起来不太正确。我希望能够让白色space 在这个小范围内可见,并更改前景色以使其突出。
对您的问题的简短回答是否定的;或者更确切地说,是的,但仅限于您已经发现的方式。
配色方案只能将 foreground/background 颜色应用于范围以及 bold/italic 字体粗细。因此,假设您正在使用的语法检测到一个特定范围,该范围用于您要突出显示的内容,配色方案唯一可以做的就是改变背景颜色以使其可见。
唯一可以原生渲染白色 space 的是 draw_white_space
设置,目前只允许您在任何地方关闭它,在任何地方打开它,或者只打开它对于选定的文本。在这种情况下,这并没有什么帮助。
尽管在插件领域中有类似的可能性(这些示例可以通过使用 View > Show Console
或 Ctrl+` 打开 Sublime 控制台并输入代码在那里;他们还假设您使用的是默认的 Markdown 语法):
view.add_regions("whitespace", view.find_by_selector("punctuation.definition.hard-line-break.markdown"), "comment", flags=sublime.DRAW_NO_FILL)
这将导致所有硬换行符都被勾勒出来,就好像它们是查找结果一样;颜色由范围选择(此处为 comment
);这将使它们可见而不会使整个字符位置具有背景颜色。
view.add_regions("whitespace", view.find_by_selector("punctuation.definition.hard-line-break.markdown"), "comment", "dot", flags=sublime.HIDDEN)
这将在以该范围结尾的行的间距中添加一个点(颜色为 comment
);您还可以将其与前面的示例结合起来以概述它们,并在装订线中引起注意。
style = '<style>.w { color: darkgray; }</style>'
content = '<body id="whitespace">' + style + '<span class="w">··</span></body>'
phantom_set = sublime.PhantomSet(view, "whitespace")
phantoms = [sublime.Phantom(r, content, sublime.LAYOUT_INLINE) for r in view.find_by_selector("punctuation.definition.hard-line-break.markdown")]
phantom_set.update(phantoms)
这使用 Sublime 的能力将内联 HTML 幻影应用到文档中,以便在实际白色 space 和之前的文本之间立即注入两个 unicode 中心点的小内联序列它。这里的内容可以是你喜欢的,只要你能生成合适的HTML;在此示例中,我们只是将颜色应用于文本。
这里的一个潜在缺点是您在内联 HTML 中看到的字符不被视为文档流的一部分;光标将在一个块中跳过它们,然后是实际的 whitespace.
此示例的结果如下所示:
走插件路线,您需要像 on_load()
这样的事件处理程序来在加载文件时应用这些事件,并需要 on_modified()
在对缓冲区进行修改后重新更新它们。可能存在也可能不存在已经实现此功能的包。