如何在Sublime Text 2中用制表符替换四个空格?

320

在这里输入图片描述

我想用制表符替换其他文本编辑器中写的所有“四个空格”。我该怎么做?

8个回答

663

在状态栏的右下角,单击Spaces: N(或Tab Width: N,其中N是整数),确保它显示Tab Width: 4以将四个空格转换为制表符,然后从初始单击出现的上下文菜单中选择Convert Indentation to Tabs

类似地,如果您想要相反操作,请单击状态栏上的SpacesTab Width文本,并从同一菜单中进行选择。

输入图像描述输入图像描述


3
虽然所有的答案都是正确的,但这个最容易理解!谢谢。 - Mohsen
1
不得不承认,确实是这样的 :) 从来没有使用过状态栏上下文菜单,我想我总是认为它们是静态指示器。 - Ekin Koc
2
它们可能没有像应该那样突出,我必须为Sublime提交一些错误文件,但这并不会阻碍它成为一个优秀的编辑器。 - ncremins
1
@phreakhead,我不确定我是否完全理解您的需求(考虑开一个新问题?),但是如果您将translate_tabs_to_spaces设置为false,则在输入新文本时,当您按下tab键时,它将是一个制表符。如果您有一个已经使用4个空格(而不是制表符)进行了一些缩进的文件,您可以使用屏幕截图菜单底部的选项将缩进转换为制表符。 - Michael
@Michael 是的,完全正确。我希望它可以自动执行,而不必点击底部的菜单。 - phreakhead
显示剩余5条评论

110

选择所有文本,然后:

Windows / Linux:

Ctrl+Shift+p

输入"indent"


Mac:

Shift+Command+p

输入"indent"


这是最快的方式,同时保持双手在键盘上。+1 - eduncan911
惊人的是...这使您可以从像Bootstrap这样带有2行缩进的文件中选择“重新缩进行”选项。 - Shina
我认为这并不完全符合他的要求。这也重新缩进了行,因此实际上更改了缩进,而他只是要求将空格转换为制表符。无论如何,这是一个很好的答案,但在某些情况下它可能会破坏您的缩进(例如考虑缩进模板)。 - Sergi Ramón
这样做更好,因为它可以很好地处理复制粘贴的代码。 - SaurabhM

46
为了让Sublime始终使用制表符,您可以尝试将以下内容添加到“首选项”->“设置-用户”中:
{
    "tab_size": 4,
    "translate_tabs_to_spaces": false
}

更多信息请参考这里:http://www.sublimetext.com/docs/2/indentation.html


5
这是正确答案,因为即使选择了“使用空格进行缩进”,该选项在重新启动后也会重置。 - mvd
2
OP要求反向操作,但奇怪的是没有这个选项。讨厌标签页的人。 - phreakhead

29

在主菜单上:

查看 -> 缩进 -> 将缩进转换为制表符 / 空格


10

使用正则表达式“搜索”\t(反斜杠-t,一个制表符),并用四个空格替换。

无论是主菜单还是右下角状态栏间距菜单都可以做到同样的事情,而且工作量更少。


3
这是海报所问的相反情况。 - Max Nanasy
3
没错,我想我对制表符的厌恶已经深入到了潜意识里。 - Dave Newton
3
这个回答与所问问题完全无关。请考虑改成正确的答案,或者删除您的回答。 - Randy the Dev
2
@AndrewDunn “完全”?真的吗?某物的反义词怎么可能“完全”无关呢?根据定义,它是有关联的,修复方法很明显。如果我们只能编辑答案就好了。 - Dave Newton

6

创建一个快捷键绑定的最快方式:

{ "keys": ["super+alt+t"], "command": "unexpand_tabs", "args": { "set_translate_tabs": true } }

将以下内容添加到Preferences > Key Bindings (user)中, 当您按下super+alt+t时,它将把空格转换为制表符。


2
您可以添加简单的按键绑定:
首选项 > 按键绑定 - 用户:
[
    { "keys": ["super+l"], "command": "reindent"},
]

现在选择行或文件,然后按:command + l

1
如果您想递归地将此更改应用于目录中的所有文件,您可以使用“查找”>“在文件中查找...”对话框:

Find in Files modal

编辑 我在图片中没有突出显示,但您必须单击左侧的 .* 按钮,以使 Sublime 将查找字段解释为正则表达式 /编辑

编辑2 我忽略了在正则表达式中添加字符串开头锚点。我正在以下进行更正,并将在有机会时更新图像 /编辑

在查找字段中的正则表达式 ^[^\S\t\n\r]{4} 将匹配 4 个空格字符(不包括制表符和换行符)的组合。替换字段 \t 表示您想要用制表符替换它们。

如果您单击 Where 字段右侧的按钮,则会看到可帮助您定位搜索和替换的选项。添加文件夹 选项将允许您选择要递归搜索的文件夹。 添加包含过滤器 选项将让您将搜索限制为某种扩展名的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接