正如@AdamAL 所说,它取决于'indent_subsequent_lines' 设置以及它是否被视为“源”或“文本”语言......默认情况下,“标记”语言(如HTML、CSS、 etc.) 和纯文本等都被认为是“文本”,而 C++、Java、PHP 等编程语言则被认为是“源代码”。
“源”语言将缩进随后的软换行行(如果indent_subsequent_lines 是true),而“文本”语言只会缩进到与当前行相同的级别。
对于您要更改的每一项,您都需要编辑给定语言的设置。 @AdamAL's answer 使用 PackageResourceViewer 包提供了一个很好的方法:
安装后,做:
[Ctrl/Cmd]+[shift]+p,"Open Resource"
找到您要更改的语言的名称,然后找到.sublime-syntax 文件或.tmLanguage 文件。 .sublime-syntax is supported from build 3084 of ST 3 并且似乎在受支持的版本中它可能胜过 .tmLanguage 文件中的值(如果存在)(在编辑“PlainTasks”包提供的 TaskPaper 文件的定义时,我在编辑 @987654333 时没有进行更改@,我必须先编辑PlainTasks.sublime-syntax)。
在 .sublime-syntax(它们是 YAML 文件)中查找第一行 scope:,其中标识了语言的主要范围名称(在 contexts: 下方还有许多其他 scope: 条目) .
在 .tmLanguage(它们是 XML .plist 文件)中查找 <string> 之后的 <key>scopeName</key>。
Sublime Text Syntax Definition Documentation Reference:
范围名称
此语法定义的最高范围的名称。 source.<lang> 或 text.<lang>。将源代码用于编程语言,将文本用于标记和其他所有内容。
<lang>(不带括号)只是给定语法/语言定义的标识符字符串。
我注意到(无论如何,在 ST 3 中),如果编辑在正确的位置,则无需重新启动 Sublime Text 即可应用更改。
还要注意,在更复杂的包中更改它可能会产生其他影响——例如,在 PlainTasks 中,它定义的附加键绑定取决于它寻找包含 text.todo 的 context,我在几个地方更改为source.todo。因此,为了使键绑定再次正常工作,我还必须为该包更新我的.sublime-keymap。 (这也可能是因为我在不需要的.sublime-syntax 之外的地方更改了它。只是说'--YMMV。)