【问题标题】:How to fix/convert space indentation in Sublime Text?如何修复/转换 Sublime Text 中的空格缩进?
【发布时间】:2013-01-24 06:14:50
【问题描述】:

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

【问题讨论】:

    标签: sublimetext2 indentation auto-indent


    【解决方案1】:

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

    完成。

    【讨论】:

    • 谢谢! :D 节省了很多时间。笔记。您也可以执行“查找:空格-空格=>全选=>选项卡”
    • 我为 sublime 创建了一个宏,它可以为您完成所有这些工作 gist.github.com/joshmfrankel/5707020。享受:-)
    • 我想指出,如果您有一个标签没有占据整个标签宽度的文本文件,“将缩进转换为空格”也可以工作。比如说,对于作者使用制表符来格式化列的文件,因此如果您要在制表符上进行查找和替换,则生成的列将不再排列。使用“Convert Indentation to Spaces”将保持正确排列
    • 在看到 Josh 的宏之前,我还为同事创建了宏和示例键绑定。我的使用 ctrl+2 和 ctrl+4 来允许来回切换:gist.github.com/beaugunderson/8588871
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      在我看来,我发现了一个比 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 或其他平台上,使用您的 findselect all 热键更改 cmd+falt+enter

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

      【讨论】:

      • 我无法让它这样工作,但我使用了这个原理,只是做了一个查找和替换(Mac上的cmd-option-F)并将“”(4个空格)替换为“ "(2 个空格)。它奏效了!
      • 我现在找到了另一种方法,但它是特定于语言的。如果您有像RubyFormat 这样的格式化插件,那么您可以简单地设置所需的选项卡大小,然后重新格式化代码。对于RubyFormat,它将是cmd+shift+R
      【解决方案4】:

      虽然许多建议在转换 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】:

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

        【讨论】:

        • 这个插件最棒了
        【解决方案6】:

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

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

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

        【讨论】:

          【解决方案7】:

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

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

          通过按 ctrl+f12,它会将文件重新缩进为 4 的制表符大小。如果您想要不同的制表符大小,只需更改“值”数字即可。 Te格式是一个简单的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} },
          【解决方案8】:

          我还按照 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 个(但如果你进一步运行它会继续缩进)

          【讨论】:

            【解决方案9】:

            我做的最简单的事情是,

            将缩进更改为制表符

            它解决了我的问题。

            你也可以这样做,

            到空间

            以及根据您的需要。

            提到了相同的快照。

            【讨论】:

            • 是的,但是问题询问的是当你开始和结束时都以空格作为缩进的情况。
            【解决方案10】:

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

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

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

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

            【讨论】:

              猜你喜欢
              • 2012-10-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-03-23
              • 1970-01-01
              • 2019-02-22
              • 2012-03-17
              相关资源
              最近更新 更多