How do I force Sublime Text to indent two spaces per tab?
Is there a way to force Sublime Text 2 to always indent two spaces per tab when working with Ruby files?
I know that indentation can be set under the view -> indentation
menu option, but it does not stick. Every time I open a new file and hit tab, it reverts back to four spaces.
Solution 1:
If you want it for all files, go to Preferences -> Settings - Default/User
. But as several comments below indicate, Syntax Specific settings can limit it to just the languages you choose.
To limit this configuration to Ruby files, first open up a Ruby file in the editor, and then go to Preferences -> Settings - Syntax Specific
. This should open a settings window named Ruby.sublime-settings
Save these settings:
{
"tab_size": 2,
"translate_tabs_to_spaces": true,
"detect_indentation": false
}
Repeat for any other syntax types by opening a file of that type and going back to the preferences to open the correct preferences file for that syntax.
I have edited this to include the "detect_indentation" line per the requests in comments; I previously used the Default/User to set my tab size, and have not needed the tab detection, but whether that is due to the global config or due to the fact that I have rarely opened files with tabs, I do not know.
Restarting should not be necessary, although in some instances it can be.
Solution 2:
If you want to force your chosen tab setting, ignoring what's likely already going on in the file, then you should include detect_indentation
in your configuration (your User settings or your Syntax Specific settings, depending on if you want it global or per-filetype):
{
"tab_size": 2,
"translate_tabs_to_spaces": true,
"detect_indentation": false
}
Solution 3:
You can also do this with the text link in the bottom bar of Sublime Text 2 ( On the right side ) that says "Tab Size 4" by default, click that and a window comes up with options to set the tab size from 1 space all the way up to 8 spaces and includes options to convert tabs to spaces and spaces to tabs.
Looks like this:
Solution 4:
Can I suggest EditorConfig? There is an extension to autoload and apply the .editorconfig
file. Then just create one in the root of your project.
.editorconfig
[*.rb]
indent_style = tab
indent_size = 2
This way, your settings are project-specific and file-specific if you use different styles for each project or language.
Here is what my own .editorconfig
looks like.
# 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