【问题标题】:What is the option that makes Sublime Text add whitespace at the left of wrapped lines?使 Sublime Text 在换行的左侧添加空格的选项是什么?
【发布时间】:2014-02-01 18:51:57
【问题描述】:

我希望 Sublime 将我的文本文件视为源代码文件,并在换行的左侧显示空格,如下所示:

beginning of long line blah blah blah, now it wraps
    and it keeps going after an automatic indent

我尝试打开控制台并手动设置选项:

view.settings().set('indent_subsequent_lines', True)

但没有任何变化,有什么想法吗?

【问题讨论】:

标签: sublimetext sublimetext3


【解决方案1】:

嗯,那很有趣。没有容易访问的设置。但正如您所指出的,ST 决定是否在软换行时添加额外的缩进,从语法是被认为是类似代码还是类似纯文本。

是其中之一取决于定义要指定的语法的包。因此缺少 ST 的全局设置,您需要更改文本包。以Text 为例。其中包含Plain text.tmLanguage。因为你改变了

<key>scopeName</key>
<string>text.plain</string>

<key>scopeName</key>
<string>source.plain</string>

我不确定不保留.plain 是否会产生不良影响。

一个简单的方法是获取PackageResourceViewerpackage。

安装后,做:

  • cmdshiftp
  • 类型:Open Resource
  • 返回
  • 类型:Text
  • 返回
  • 类型:Plain text.tmLanguage
  • 进行编辑并保存。

PackageResourceViewer 会将修改后的 Text 包保存到您的 Packages 目录中。 sublime 将显示被认为具有Plain text-syntax 的文件,就像它们是代码一样。

需要注意的是,您需要为每个要被视为代码的文本语法执行此操作。

【讨论】:

  • 请注意,许多语言现在都使用.sublime-syntax 文件(它是一个 YAML 文件)来代替 .tmLanguage 文件(它是 XML .plist),或者作为其补充。因此,您可能也需要在这些方面进行更改。在 YAML 中,要编辑的正确的只是第一行 scope: 行,其中标识了语言的主要范围名称(在 contexts: 下方还有许多其他 scope: 条目)。为了让“PlainTasks”在换行时缩进,我在几个不同的地方进行了编辑,但最终还是在 .sublime-syntax 中得到了它。
  • 这会破坏拼写检查。有什么办法可以修复吗?
【解决方案2】:

正如@AdamAL 所说,它取决于'indent_subsequent_lines' 设置以及它是否被视为“源”或“文本”语言......默认情况下,“标记”语言(如HTML、CSS、 etc.) 和纯文本等都被认为是“文本”,而 C++、Java、PHP 等编程语言则被认为是“源代码”。

“源”语言将缩进随后的软换行行(如果indent_subsequent_linestrue),而“文本”语言只会缩进到与当前行相同的级别。

对于您要更改的每一项,您都需要编辑给定语言的设置。 @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 文件)中查找 &lt;string&gt; 之后的 &lt;key&gt;scopeName&lt;/key&gt;

Sublime Text Syntax Definition Documentation Reference:

范围名称

此语法定义的最高范围的名称。 source.&lt;lang&gt;text.&lt;lang&gt;。将源代码用于编程语言,将文本用于标记和其他所有内容。

&lt;lang&gt;(不带括号)只是给定语法/语言定义的标识符字符串。

我注意到(无论如何,在 ST 3 中),如果编辑在正确的位置,则无需重新启动 Sublime Text 即可应用更改。

还要注意,在更复杂的包中更改它可能会产生其他影响——例如,在 PlainTasks 中,它定义的附加键绑定取决于它寻找包含 text.todocontext,我在几个地方更改为source.todo。因此,为了使键绑定再次正常工作,我还必须为该包更新我的.sublime-keymap。 (这也可能是因为我在不需要的.sublime-syntax 之外的地方更改了它。只是说'--YMMV。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2013-03-07
    • 1970-01-01
    • 2014-11-07
    • 2019-05-10
    • 2013-04-19
    • 2016-11-08
    相关资源
    最近更新 更多