如何在Sublime Text中修复/转换空格缩进?

时间:2013-02-08 13:07:15

标签: sublimetext2 indentation auto-indent

示例:如果我的文档有2个空格缩进,并且我希望它有4个空格缩进,如何使用Sublime Text编辑器自动转换它?

10 个答案:

答案 0 :(得分:508)

这是Sublime Text 2或3中的一个巧妙的技巧,用于转换文档中的缩进间距。

<强> TL; DR:

从2个空格转换为4个空格:

确保选项卡宽度设置为2.将2空格缩进转换为制表符,切换到制表符宽度4,然后将缩进转换回空格。

详细说明:

转到:

View -> Indentation

应该是:

  • Indent using spaces [x]
  • Tab width: 2

选择

  • Convert Indentation to Tabs

然后选择:

  • Tab width: 4
  • Convert Indentation to Spaces

完成。

答案 1 :(得分:73)

我实际上发现让我的理智更好地定义用户偏好:

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

detect_indentation: false特别重要,因为它强制Sublime遵守每个文件中的这些设置,而不是View -> Indentation设置。

如果您想获得幻想,您还可以通过粘贴Sublime -> Preferences -> Key Binding - User中的以下内容来定义键盘快捷键以自动重新缩进代码(YMMV):

[
  { "keys": ["ctrl+i"], "command": "reindent" }
]

并可视化空白:

"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],

答案 2 :(得分:9)

在我看来,我发现一个比Magne更简单的解决方案:

在mac上:

"cmd+f" => "  "(two spaces) => "alt+enter" => "arrow right" => "  "(two more spaces) => set tab width to 4(this can be done before or after.

在Windows或其他平台上,使用cmd+falt+enter个热键更改findselect all

注意:如果代码中有多个空格,则此方法容易出现“错误”。因此它不如Magne的方法安全,但它更快(至少对我而言)。

答案 3 :(得分:7)

虽然许多建议在转换2时起作用 - > 4个空间。转换4时我遇到了一些问题 - &gt; 2。

这是我最终使用的内容:

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" }
]

答案 4 :(得分:5)

如果您发现搜索和替换速度更快,您可以使用这样的正则表达式替换:

查找(正则表达式):(^|\G) {2}(而不是“{2}” <space>{2}您可以只写两个空格。为了清楚起见,请在此处使用。)

替换为4个空格或任何您想要的空格,例如\t

答案 5 :(得分:5)

我为它写了一个插件。您可以找到它here或寻找&#34; ReIndent&#34;在包控制中。它主要与凯尔芬利写的一样,但是用方便的方式用2到4之间的转换,反之亦然。

答案 6 :(得分:2)

您必须将此代码添加到自定义键绑定中:

{ "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} }

按ctrl + f12,它会将文件重新标记为标签大小4.如果您想要不同的标签大小,只需更改“值”编号即可。 Te格式是一个简单的json。

答案 7 :(得分:1)

我也遵循了 Josh Frankel 的建议并创建了一个 Sublime 宏 + 添加了键绑定。不同之处在于此脚本确保首先将间距设置为制表符,然后将制表符大小设置为 2。如果这不是起点,宏将无法运行。

这里是宏的要点: https://gist.github.com/drivelous/aa8dc907de34efa3e462c65a96e05f09

在 Mac 中,要使用宏 + 键绑定:

  1. 创建一个名为 spaces2to4.sublime-macro 的文件并复制/粘贴 gist 中的代码。对我来说,它位于:
<块引用>

/Library/Application\ Support/Sublime\ Text\ 3/Packages/User/spaces2to4.sublime-macro

  1. 选择Sublime Text > Preferences > Key Bindings
  2. 将此命令添加到用户指定的 sublime-keymap(它在一个数组中——它可能为空):
{
    "keys": ["super+shift+o"],
    "command": "run_macro_file",
    "args": {
        "file":"Packages/User/spaces2to4.sublime-macro"
    }
}

现在 ⌘ + shift + o 现在会自动将每个文件从 2 个空格缩进转换为 4 个(但如果您进一步运行它会继续缩进)

答案 8 :(得分:0)

我做的最简单的事情是,

  

将缩进更改为标签

它解决了我的问题。

你也可以这样做,

  

到Spaces

以及您的需要。

提到相同的快照。

enter image description here

答案 9 :(得分:0)

最近我遇到了类似的问题。我正在使用崇高编辑器。 这不是代码问题,而是编辑器。

以下偏好设置的更改对我有用。

崇高文本菜单->首选项->设置:特定于语法

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}