How to fix/convert space indentation in Sublime Text?
Here's a neat trick in Sublime Text 2 or 3 to convert your indentation spacing in a document.
TL;DR:
Converting from 2 spaces to 4 spaces:
Ensure tab width is set to 2. Convert your 2-space indentation to tabs, switch to tab width 4, and then convert the indentation back to spaces.
The detailed description:
Go to:
View -> Indentation
It should read:
Indent using spaces [x]
Tab width: 2
Select:
Convert Indentation to Tabs
Then Select:
Tab width: 4
Convert Indentation to Spaces
Done.
I actually found it's better for my sanity to have user preferences to be defined like so:
"translate_tabs_to_spaces": true,
"tab_size": 2,
"indent_to_bracket": true,
"detect_indentation": false
The detect_indentation: false
is especially important, as it forces Sublime to honor these settings in every file, as opposed to the View -> Indentation
settings.
If you want to get fancy, you can also define a keyboard shortcut to automatically re-indent your code (YMMV) by pasting the following in Sublime -> Preferences -> Key Binding - User
:
[
{ "keys": ["ctrl+i"], "command": "reindent" }
]
and to visualize the whitespace:
"indent_guide_options": ["draw_active"],
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"draw_white_space": "all",
"rulers": [120],
I found, in my mind, a simpler solution than Magne:
On mac:
"cmd+f" => " "(two spaces) => "alt+enter" => "arrow right" => " "(two more spaces) => set tab width to 4(this can be done before or after.
On windows or other platforms change cmd+f
and alt+enter
with whatever your find
and select all
hotkeys are.
Note: this method is prone to "errors" if you have more than one space within your code. It is thus less safe than Magne's method, but it is faster (for me at least).
While many of the suggestions work when converting 2 -> 4 space. I ran into some issues when converting 4 -> 2.
Here's what I ended up using:
Sublime Text 3/Packages/User/to-2.sublime-macro
[
{ "args": null, "command": "select_all" },
{ "args": { "set_translate_tabs": true }, "command": "unexpand_tabs" },
{ "args": { "setting": "tab_size", "value": 1 }, "command": "set_setting" },
{ "args": { "set_translate_tabs": true }, "command": "expand_tabs" },
{ "args": { "setting": "tab_size", "value": 2 }, "command": "set_setting" }
]