如何在Eclipse中将制表符改为空格?

947

默认情况下,Eclipse使用硬制表符作为缩进。我应该如何将其改为空格?


48
因为在不同的编辑器或环境中,制表符的呈现方式不同,而空格始终是一致的。 - mmmdreg
34
@mmmdreg 恰好符合我的观点。空格是僵硬且浪费的。使用制表符可以让查看者自由地配置他们的编辑器。我喜欢我的制表符显示为2个空格,我的同事则喜欢4个。如果不使用制表符,这是不可能的。我和我的同事在各自的编辑器中格式化时会遇到空格的问题;而制表符并不会有这个问题;这也是制表符被发明的原因(我猜)。 - i3ensays
20
“阿门,兄弟!我已经试图让人们理解这个概念超过10年了(http://www.rizzoweb.com/java/tabs-vs-spaces.html)。真正让我担忧的是,作为程序员,你会认为每个人都能理解抽象概念(制表符是代码缩进的抽象表示,而固定数量的空格是硬编码实现),但恐怕许多程序员无法看到这个抽象概念。” - E-Riz
33
你的团队应该拥有一套清晰规定代码格式的编码标准,这将避免你提到的争论从而节省时间。尽快采用一个标准,但是这个标准肯定会明确规定永远不要使用制表符,因为"空格派"早已经赢得了这场"圣战",所以标准并不能帮助你解决这个问题。除了对齐问题,只使用空格的最大原因之一是版本控制工具和代码评审人员不必处理这个问题。我20年前也曾站在你这一边进行过这场争论,但最终学会接受空格派的观点。 - Night Owl
16
原因是人们不可避免地会使用制表符和空格的组合,在某些编辑器中,代码可能无法正确显示。如果每个人都只使用空格,那么这就永远不会成为问题。 - Eamonn McEvoy
显示剩余10条评论
23个回答

1302

Java编辑器

  1. 单击Window » Preferences
  2. 展开Java » Code Style
  3. 单击Formatter
  4. 单击编辑按钮
  5. 单击缩进选项卡
  6. 常规设置下,将Tab policy设置为:Spaces only
  7. 单击OK反复应用更改。

[注意:如有必要,请使用新名称保存配置文件,因为默认配置文件无法被覆盖。]

默认文本编辑器

版本3.6之前:

Window->Preferences->Editors->Text Editors->Insert spaces for tabs

版本3.6及以上:

  1. 点击Window » Preferences
  2. 展开General » Editors
  3. 点击Text Editors
  4. 勾选Insert spaces for tabs
  5. 重复多次点击OK以应用更改。

请注意,Eclipse中许多非Java编辑器都是基于默认文本编辑器的。令人惊讶的是,这个设置直到3.3版本才可用。

C / C++

  1. 点击Window » Preferences
  2. 展开C/C++ » Code Style
  3. 点击Formatter
  4. 点击New按钮创建新配置文件,然后点击OK继续
  5. 点击Indentation标签
  6. General Settings下,将Tab policy设置为:Spaces only
  7. 重复多次点击OK以应用更改。

HTML

  1. 点击Window » Preferences
  2. 展开Web » HTML Files
  3. 点击Editor
  4. Formatting下,选择Indent using spaces单选按钮
  5. 点击OK以应用更改。

CSS

按照HTML的操作方法进行操作,但是请将HTML Files替换为CSS Files

JSP

默认情况下,JSP文件遵循HTML文件的格式设置。

XML

可以在偏好设置中配置XML文件的间距。

  1. 点击Window » Preferences
  2. 展开XML » XML Files
  3. 点击Editor
  4. 选择Indent using spaces
  5. 如果需要,可以指定Indentation size:缩进的空格数。

19
如果你安装了MyEclipse或任何基于Eclipse构建的IDE,可能会有另一个编辑器覆盖你的设置。对于MyEclipse和JavaScript而言就是这种情况。我已经在文本编辑器中启用了"为制表符插入空格"选项,但仍然使用的是制表符而不是空格。当时我差不多要放弃并将其视为一个错误了,但后来我发现在"相关编辑器"列表中有一个针对JavaScript(*.js)文件的第二个编辑器。 - John
5
这可能是一个有用的提示,但如果你遇到相同的问题,请检查文件是否有其他关联编辑器,因为它们可能会覆盖你的设置。为此,请转到窗口 > 首选项 > 通用 > 编辑器 > 文件关联 > 然后在列表中查找破坏你心情的文件扩展名 > 单击它并查看下面的关联编辑器列表。 - John
109
对于现有的Java文件,请按Ctrl-A键以突出显示所有内容,然后按Ctrl-I键应用当前缩进。否则,现有的制表符将阻止使用Enter创建新行中的空格。它还将用空格替换现有的制表符。 - topchef
4
对于 C/C++,还需要修改 C/C++->“代码风格”。尽管此软件功能强大,但这是迄今为止最令人讨厌的部分。 - dashesy
3
更详细地说,对于C/C++和Eclipse 3.6或更高版本,第二步是:点击“Window”菜单,选择“Preferences”,然后依次选择“C/C++”、“Code Style”、“Formatter”,在弹出的窗口中选择“New”,输入任何配置文件名称,确保“Open the edit dialog now”为启用状态,点击“OK”,然后在“Indentation”选项卡下找到“Tab Policy”,将其设置为“Spaces Only”。 - Garrett
显示剩余15条评论

157
  • JavaScript » Code Style » General » Tab size (set to 4)
  • JavaScript » Code Style » General » Use tab character (uncheck it)
  • Javascript » 首选项 » 代码风格 » 格式化程序 » 编辑 » 缩进 (选择“仅空格”)
  • 重命名格式化程序设置配置文件以保存它

  • 对于Java:

    • Java » 首选项 » 代码风格 » 格式化程序 » 编辑 » 缩进 (选择“仅空格”)
    • 重命名格式化程序设置配置文件以保存它

    1
    我在首选项的根目录中没有看到Web或Javascript选项(尽管我有可用的Web透视图),我想仅将制表符设置为空格,以便于HTML、CSS和JavaScript文件。我使用的是Helios Eclipse for Java Developers,你有任何想法如何获得该选项吗? - danny
    +1 是针对 Java 的,因为它的默认设置会覆盖一般文本编辑器的设置,这是绝对必要的。 - Giulio Piancastelli
    对于C语言,代码风格 -> 格式化程序 -> 编辑 -> 缩进 -> 常规设置 -> 制表符策略。 - andrew cooke
    不适用于Eclipse PDT Luna 4.4。 - Raphaël Colantonio
    1
    谢谢!这在Mars上运行良好。令人失望的是文本编辑器选项存在却毫无作用! - paiego
    显示剩余2条评论

    38

    1
    对于XML,xml-->xml文件-->编辑器,然后选择使用空格缩进,缩进大小为2。 - Junchen Liu

    27

    针对CDT:

    • 前往Window/Preference » C/C++ » Code Style » Formatter » New
    • 创建一个新的配置文件,因为内置配置文件无法更改
    • MyProfile(为配置文件选择一个名称)
    • Indentation » Tab Policy(选择仅使用空格)

    25

    给那些偶然看到这篇文章的人一个快速提示; 这个设置还有一个地方可以进行设置,就在你的项目中!

    Eclipse支持项目特定的设置,一些项目会使用它们自己的未经管理的选项卡/空格设置,这些设置除了当前项目属性外不会显示在任何地方。

    这可以通过以下方式进行管理:

    • Package Explorer 中,右键单击当前项目
    • 属性 » Java 代码风格
    • 关闭所有项目特定选项

    仅当您将别人的代码导入Eclipse时,这通常才会成为问题。


    23

    对于默认编辑器:

    窗口 » 首选项 » 编辑器 » 文本编辑器 » 插入空格替换制表符

    enter image description here

    对于Java编辑器:

    窗口 » 首选项 » Java » 代码风格 » 格式化程序 » 编辑 » 缩进 » 制表符策略 "仅使用空格"

    enter image description here


    我已将其设置为仅制表符。 - Tom

    10

    当我遇到这个问题时,我已经在所有可以找到的地方将“使用空格代替制表符”设为真,但是我仍然得到了制表符。最终发现是因为文件中其他地方使用了制表符,而它试图进行智能缩进或其他令人沮丧的操作。

    解决方法是选择文件的整个内容,然后按下Mac上的command+shift+f键。这将应用给定格式到文件中。我不知道Windows上相同的键盘绑定,但可以尝试一下。此时,我开始得到了预期的行为。


    为了更模块化地解决这个问题,用户还可以进行查找/替换\t(确保启用了正则表达式),并用所需数量的空格字符进行替换。 - jlewkovich
    在Windows上格式化文件的关键是非常相似的 - Ctrl+Shift+F - A.Alessio

    8

    打开 Window -> Preferences,在搜索框中输入tab(会显示如下对话框):

    enter image description here

    进入突出显示的部分以更改选项卡策略。对于Editor设置,主要是使用Indent using spaces(如上图所示)。

    对于Formatter设置,您需要编辑活动配置文件并更新Tab policy(可在 `Indentation -> General settings下找到):

    enter image description here


    6

    Eclipse IDE for C/C++ Developers, Version: Helios Service Release 2

    您需要通过按“Window->Preferences->Code Style”中的“New”按钮来创建新配置文件。

    进入缩进选项卡,选择“Tab policy = Space only”。


    Eclipse IDE for C/C++ Developers, Version: Kepler Service Release 1

    请按照以下路径创建新的配置文件: "Window > Preferences > C/C++ > Code Style > Formatter"

    进入缩进选项卡,选择“Tab policy = Space only”。


    6

    请务必检查Java格式化程序,因为它会覆盖"插入空格以代替制表符"设置。 转到:

    Java->代码样式->格式化程序->编辑->缩进

    注意:您需要创建自定义格式才能保存配置。


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