如何强制 Sublime Text 每个制表符缩进两个空格?

Posted

技术标签:

【中文标题】如何强制 Sublime Text 每个制表符缩进两个空格?【英文标题】:How do I force Sublime Text to indent two spaces per tab? 【发布时间】:2012-03-17 11:04:27 【问题描述】:

在处理 Ruby 文件时,有没有办法强制 Sublime Text 2 每个制表符缩进两个空格?

我知道可以在view -> indentation 菜单选项下设置缩进,但它不坚持。每次我打开一个新文件并点击选项卡时,它都会恢复为四个空格。

【问题讨论】:

默认情况下,Sublime 略有不同/奇怪。尽管它可能会使用多个空格保存文件,但如果将其标识为缩进,它会自行删除两个空格。 【参考方案1】:

如果您希望 所有 文件使用它,请转至 Preferences -> Settings - Default/User。但正如以下几个 cmets 所示,语法特定设置可能会将其限制为您选择的语言。

要将此配置限制为 Ruby 文件,首先在编辑器中打开一个 Ruby 文件,然后转到 Preferences -> Settings - Syntax Specific。这应该会打开一个名为Ruby.sublime-settings的设置窗口

保存这些设置:


  "tab_size": 2,
  "translate_tabs_to_spaces": true,
  "detect_indentation": false

通过打开该类型的文件并返回首选项以打开该语法的正确首选项文件,对任何其他语法类型重复。

我已对其进行了编辑,以根据 cmets 中的请求包含“detect_indentation”行;我以前使用默认/用户来设置我的标签大小,并且不需要标签检测,但这是由于全局配置还是由于我很少打开带有标签的文件,我不知道。

应该不需要重新启动,但在某些情况下可能需要。

【讨论】:

从 build 2181 开始。您可以从 Preferences -> Settings - Default/User 配置设置。最好将其放在用户设置中,因为这是预期的方法。 @KevinJalbert(和 DGM)实际上他应该把它放在语法特定的设置中,所以它只会影响 Ruby 文件。 请注意该值为 truenot "true"。 这特别有用,因为 Sublime Text 自己的网站文档错误地建议在设置键中使用 camelCase 而不是下划线......仍然。 (sublimetext.com/docs/indentation) @EricGoldberg - 我不知道你是怎么到那个文档页面的,但是如果你去sublimetext.com > 支持,在文档下,点击 Sublime Text 2 链接,你会被带到sublimetext.com/docs/2 - 从那里,您可以找到有关缩进的文档,并且设置键正确使用下划线:sublimetext.com/docs/2/indentation.html【参考方案2】:

如果你想强制你选择的选项卡设置,忽略文件中可能已经发生的事情,那么你应该在你的配置中包含detect_indentation(你的用户设置或你的语法特定设置,取决于你是否希望它是全局的或每个文件类型):


    "tab_size": 2,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false

【讨论】:

感谢您的提示!如果不关闭detect_indentation,我会出现非常奇怪的行为(它错误地检测到缩进并使用它而不是我在设置中指定的)。 在默认设置中执行此操作对我有用。确保您查看该设置是否已存在。如果您添加它并且稍后将其声明为 true,它将保持设置为 true。 请注意,对默认设置的更改将被 Sublime Text 更新等覆盖。对用户设置的更改不会被覆盖。 谢谢!! "detect_indentation":falsecritical 否则其他设置将被忽略。终于! 这是一个很好的观点,但你的例子缩进不当;-)【参考方案3】:

您也可以使用 Sublime Text 2(右侧)底部栏中的文本链接执行此操作,默认情况下显示“Tab Size 4”,单击该链接会出现一个窗口,其中包含设置选项卡大小的选项从 1 个空格一直到 8 个空格,包括将制表符转换为空格和将空格转换为制表符的选项。

看起来像这样:

【讨论】:

很好的提示,但你知道这是否会成为一个粘性设置吗?例如,从顶部菜单栏中更改缩进仅适用于当前打开的文件,而不适用于其他文件,这是我最初的问题。 不起作用。这是一个很好的提示,但它并不粘:关闭并重新打开文件(或打开另一个文件)会将缩进恢复为四个空格。 是的,它不是粘性的,它是每个文件的。您必须进入 Sublime Text 的设置来设置选项卡/空格的默认设置。 这解决了我在 Sublime Text 3 中的问题。谢谢!【参考方案4】:

我可以推荐EditorConfig吗?有一个extension 可以自动加载和应用.editorconfig 文件。然后只需在项目的根目录中创建一个。

.editorconfig

[*.rb]
indent_style = tab
indent_size = 2

这样,如果您为每个项目或语言使用不同的样式,您的设置是项目特定和文件特定的。


这是我自己的.editorconfig 的样子。

# editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

【讨论】:

我不想进行全局更改。所以这是唯一有效的解决方案。我对 EditorConfig 进行了一些研究,对于支持它的 IDE,它看起来非常好。 碰巧我的项目中已经有一个 .editorconfig 并且甚至不知道它。 (angular-cli 生成一个) 这不是最佳答案!?正是我想要的。谢谢!【参考方案5】:

我使用Stupid Indent 包。

Install Package -> Stupid Indent

Preferences -> Package Settings -> Stupid Indent -> Setting-Users

将设置(Ruby 部分的)复制到。


    "configuration":
    [
        
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        
    ]

【讨论】:

是的,这就是我需要的:D 太棒了。非常感谢:) 警告。愚蠢的缩进default 和自定义设置会强制覆盖Sublime TextEditorConfig 设置。谢谢。【参考方案6】:

我按照前面的答案,包括添加detect_indentation 行,我的制表符仍然是五个空格。然后我意识到从 ruby​​ 文件中选择 Preferences -> Settings -> More -> Syntax Specific -> User 对我来说是 Ruby on Rails.sublime-settings,而不是 Ruby.sublime-settings

我将我的 Ruby on Rails.sublime-settings 文件重命名为 Ruby.sublime-settings。最后两个空格制表符起作用了!我继续在Ruby on Rails.sublime-settings 中设置相同的设置,以确保。

【讨论】:

以上是关于如何强制 Sublime Text 每个制表符缩进两个空格?的主要内容,如果未能解决你的问题,请参考以下文章

强制 Sublime Text Editor 使用 4 个空格进行缩进

将多个文件中的空格转换为制表符 Sublime Text 2

求助前端大神!关于sublime text使用的一些问题

如何在 Sublime Text 3 中正确格式化/缩进 HTML 和 PHP 代码

如何高效地使用 Sublime Text

text 缩进中不一致使用制表符和空格