How do I force Sublime Text to indent two spaces per tab?

230,402

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:

Tab Options in Sublime Text 2

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

Solution 5

I use Stupid Indent package.

Install Package -> Stupid Indent

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

Copy settings (of Ruby part) into.

{
    "configuration":
    [
        {
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        }
    ]
}
Share:
230,402
Mohamad
Author by

Mohamad

I love well designed digital products, programming, and tech. Driving digital product roadmap in Brazil for world’s third largest retailer of home decor and building materials.

Updated on July 14, 2022

Comments

  • Mohamad
    Mohamad almost 2 years

    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.