示例:如果我的文档有2个空格缩进,并且我希望它有4个空格缩进,如何使用Sublime Text编辑器自动转换它?
答案 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+f
和alt+enter
个热键更改find
和select 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 中,要使用宏 + 键绑定:
spaces2to4.sublime-macro
的文件并复制/粘贴 gist 中的代码。对我来说,它位于:/Library/Application\ Support/Sublime\ Text\ 3/Packages/User/spaces2to4.sublime-macro
Sublime Text
> Preferences
> Key Bindings
{
"keys": ["super+shift+o"],
"command": "run_macro_file",
"args": {
"file":"Packages/User/spaces2to4.sublime-macro"
}
}
现在 ⌘ + shift + o
现在会自动将每个文件从 2 个空格缩进转换为 4 个(但如果您进一步运行它会继续缩进)
答案 8 :(得分:0)
答案 9 :(得分:0)
最近我遇到了类似的问题。我正在使用崇高编辑器。 这不是代码问题,而是编辑器。
以下偏好设置的更改对我有用。
崇高文本菜单->首选项->设置:特定于语法:
{
"tab_size": 4,
"translate_tabs_to_spaces": true
}