如何强制Sublime Text在每个标签上缩进两个空格?


504

有没有一种方法可以强制Sublime Text 2在使用Ruby文件时始终在每个选项卡上缩进两个空格?

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


默认情况下,Sublime稍有不同/奇怪。尽管它可以用多个空格保存文件,但编辑器在将其标识为缩进时会自动删除两个空格。
2015年

Answers:


899

如果需要所有文件,请转至Preferences -> Settings - Default/User。但是,如以下几个注释所示,“语法特定”设置可以将其限制为仅您选择的语言。

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

保存以下设置:

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

对其他任何语法类型重复上述操作,方法是打开该类型的文件,然后返回到首选项以打开该语法的正确首选项文件。

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

虽然在某些情况下可能需要重新启动,但没有必要重新启动。


11
从内部版本2181开始。您可以从首选项->设置-默认/用户中配置设置。最好将其放在“用户设置”中,因为这是预期的方法。
凯文·贾尔伯特

20
@KevinJalbert(和DGM)实际上,他应该将其放在语法特定的设置中,因此它仅影响Ruby文件。
Paul Hoffer,2012年

6
请注意,该值为true不是 “ true”。
EarthmeL13年

1
这特别有用,因为Sublime Text自己的网站文档错误地建议使用camelCase而不是设置键中的下划线...仍然。(sublimetext.com/docs/indentation
埃里克德堡

@EricGoldberg -我不知道你是怎么到文档页面,但是如果你去sublimetext.com >支持,并在文档,单击崇高文本2链接,你被带到sublimetext.com/docs/2 -从那里,您可以找到有关缩进的文档,并且设置键正确使用下划线:sublimetext.com/docs/2/indentation.html
jbyrd

166

如果要强制选择的选项卡设置,而忽略文件中可能已经发生的事情,则应将其包括detect_indentation在您的配置中(您的用户设置或特定于语法的设置,取决于您希望它是全局文件类型还是每个文件类型):

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

谢谢你的提示!没有detect_indentation关闭我会得到一个非常奇怪的行为(它错误地检测到缩进并使用了它而不是我在设置中指定的缩进)。
JacobEvelyn 2014年

在默认设置下执行此操作对我有用。确保查看该设置是否已存在。如果添加它,并且以后将其声明为true,则它将保持设置为true。
David

3
请注意,默认设置的更改将被Sublime Text更新等覆盖。对用户设置的更改将不会被覆盖。
James Chevalier

6
谢谢!!"detect_indentation":false至关重要的其他设置将被忽略其他。最后!
zzzeek 2014年

很好,但是您的示例缩进不当;-)
snow6oy

88

您还可以通过Sublime Text 2(右侧)的底部栏中的文本链接(默认情况下为“制表符大小4”)来执行此操作,单击该链接,然后出现一个窗口,其中包含用于将制表符大小设置为1个空格的选项一直到8个空格,并包括将制表符转换为空格并将空格转换为制表符的选项。

看起来像这样:

Sublime Text 2中的选项卡选项


3
很好的提示,但是您知道那是否会变成粘性设置吗?例如,从顶部菜单栏更改缩进仅适用于当前打开的文件,而不适用于其他文件,这是我的原始问题。
穆罕默德2013年

5
是行不通的。这是一个很好的技巧,但它不是粘性的:关闭并重新打开文件(或打开另一个文件)会将缩进还原为四个空格。
Mohamad 2014年

1
是的,它不是粘性的,它是每个文件的。您必须进入Sublime Text的设置才能为制表符/空格设置默认设置。
Taskism

这解决了Sublime Text 3中的问题。谢谢!
阿德里安

29

我可以建议EditorConfig吗?有一个扩展名可以自动加载和应用.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

2
我不想使它成为全球性的变化。因此,这是唯一有效的解决方案。我对EditorConfig进行了一些研究,对于支持它的IDE来说,它看起来非常不错。
尼尔·梦露

1
碰巧的是,我的项目中已经有一个.editorconfig,甚至都不知道。(angular-cli生成一个)
uglycoyote17年

9

我使用愚蠢的缩进包。

Install Package -> Stupid Indent

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

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

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

是的,这就是我需要的:D
Dragutescu Alexandru

太棒了 非常感谢:)
krithikaGopalakrisnan

警告。愚蠢的缩进默认设置和自定义设置强制覆盖Sublime TextEditorConfig设置。谢谢。
СашаЧерных

1

我遵循了先前的答案,包括添加了detect_indentation行,而我的标签仍然是五个空格。然后,我意识到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为了确定,我继续进行同样的设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.