239

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

4

10 回答 10

545

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

TL;博士:

从 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

完毕。

于 2013-02-08T13:07:15.437 回答
75

实际上,我发现像这样定义用户偏好对我的理智更好:

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

detect_indentation: false尤其重要,因为它强制 Sublime 在每个文件中尊重这些设置,而不是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],
于 2014-01-30T15:18:22.623 回答
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无论您的find热键select all是什么,都会发生变化。

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

于 2013-05-04T21:19:12.523 回答
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" }
]
于 2015-01-27T15:52:14.530 回答
6

我为它写了一个插件。您可以在此处找到它或在包控制中查找“ReIndent”。它与 Kyle Finley 所写的大部分内容相同,但以一种方便的方式使用 2 和 4 之间转换的快捷方式,反之亦然。

于 2016-04-20T05:24:15.903 回答
5

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

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

替换为 4 个空格,或者任何你想要的,比如\t.

于 2014-01-29T15:37:48.963 回答
2

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

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

通过按 ctrl+f12,它会将您的文件重新缩进为 4 的选项卡大小。如果您想要不同的选项卡大小,您只需更改“值”数字。Te格式是一个简单的json。

于 2017-04-18T15:50:35.563 回答
1

我还按照 Josh Frankel 的建议创建了一个 Sublime Macro + 添加键绑定。不同之处在于此脚本确保首先将间距设置为制表符,然后将制表符大小设置为 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 个(但如果你进一步运行它会继续缩进)

于 2021-01-17T07:36:49.010 回答
0

我做的最简单的事情是,

将我的缩进更改为制表符

它解决了我的问题。

你也可以做到的,

到空间

以及根据您的需要。

提到了相同的快照。

在此处输入图像描述

于 2018-05-23T08:18:28.600 回答
0

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

以下首选项设置的更改对我有用。

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

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
于 2019-02-11T07:47:31.730 回答