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


228

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

Answers:


525

这是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

做完了


5
谢谢!:D节省了大量时间。注意。您还可以执行“查找:space-space =>全选=>选项卡”
自动

11
我创建了一个Sublime宏,它为您完成了gist.github.com/joshmfrankel/5707020。享受:-)
乔什·弗兰克尔

2
我想指出的是,如果您有一个文本文件,其中制表符未占用整个制表符宽度,那么“将缩进转换为空格”也可以使用。说,对于作者使用制表符格式化列的文件,因此,如果要在制表符上进行查找和替换,则将不再对齐结果列。使用“将缩进转换为空格”将使它正确
对齐

在看到Josh的宏之前,我还为同事创建了宏和示例键绑定。我的使用ctrl + 2和ctrl + 4来回切换:gist.github.com/beaugunderson/8588871
Beau

74

实际上,我发现最好像这样定义用户首选项:

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

detect_indentation: false是特别重要的,因为它迫使崇高的每个文件兑现这些设置,而不是在View -> Indentation设置。

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

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

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+f,并alt+enter以您findselect all热键。

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


我无法使它正常工作,但是我使用了原理,只是进行了查找和替换(在Mac上为cmd-option-F),然后将“”(4个空格)替换为“”(2个空格)。而且有效!
evanbikes 2013年

我现在发现了另一种方法,但这是特定于语言的。如果您有类似的格式设置插件,RubyFormat则只需设置所需的标签大小,然后重新格式化代码即可。在的情况下,RubyFormat这将是cmd+shift+R
Automatico

7

虽然许多建议在转换2-> 4空间时有效。转换4-> 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" }
]

5

如果发现搜索并替换使用更快,则可以使用正则表达式替换,如下所示:

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

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


5

我为此写了一个插件。您可以在此处找到它,也可以在程序包控件中查找“ ReIndent”。它主要执行与Kyle Finley所写的相同的操作,但是以方便的方式提供了在2和4之间转换的捷径,反之亦然。


2

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

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

通过按ctrl + f12组合键,可以将文件重新缩进制表符大小为4。如果要改变制表符大小,只需更改“值”数字。格式是一个简单的json。


我喜欢它,谢谢!我像这样添加2和4:{ "keys": ["ctrl+f10"], "command": "set_setting", "args": {"setting": "translate_tabs_to_spaces", "value": 2} }, { "keys": ["ctrl+f11"], "command": "set_setting", "args": {"setting": "tab_size", "value": 2} }, { "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} },
JREAM

0

我做的最简单的事情是

将我的缩进更改为制表符

它解决了我的问题。

你也可以做到的,

到太空

以及根据您的需要。

提到相同的快照。

在此处输入图片说明


是的,但是这个问题要求您在以缩进作为空格开头和结尾时都出现这种情况。
Magne

0

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

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

Sublime Text菜单->首选项->设置:特定于语法

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
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.