26

有没有办法说服 Eclipse 使用制表符而不是空格来缩进其内置的 Java 内容辅助建议(例如在创建覆盖父类中的方法的空方法时)?

我能找到的唯一看起来相关的设置是在 Windows/Preferences/General/Editors/Text Editors/Insert spaces for tabs 中,并且此设置未选中。

(编辑:一些张贴者指出 Java / Code Style / Formatter / Indentation / Tab 策略,设置为“仅制表符”)

目前我必须记住选择它们并使用<Ctrl>+<Shift>+<F>.

4

9 回答 9

26

感谢 Simon Nickerson 在上面的评论,我找到了解决方案,这就是原始海报在他的编辑中所指的内容。找到设置后,我明白他们在说什么。然而,通往它的道路距离路径的开始只有几步之遥,因此对于像我这样的 Eclipse 新手或已经离开它几年的人来说,它无法给出明确的答案。所以我会在这里给出完整的路径:

  1. 转到项目-> 属性。
  2. 在结果框中,转到“Java 代码样式”-> 格式化程序。
  3. 单击框右上角的“配置工作区设置”链接。
  4. 单击名称旁边的编辑按钮。
  5. 将“选项卡策略:”下拉框更改为“仅限空格”,因为选项卡是邪恶的,并且不可避免地会导致格式错误的代码。>:-( 这也是您可以实际影响文件中缩进大小和制表符大小的地方。
  6. 您需要更改框顶部的“配置文件名称”以保存更改。
  7. 幸运的是,一旦您点击“OK”,Eclipse 就会将您的配置文件用于您当前的项目,因此您在这一步之后就完成了。

现在,真正被破坏的是这些设置覆盖了更前端的界面,用于更改“Windows/Preferences/General/Editors/Text Editors/Insert spaces for tabs”中类似的设置。对于编辑器相对较新的人来说,这似乎是设置默认选项卡 = 空格设置的地方。找到真正的答案后,很明显这只是用于一般文本编辑,需要在配置文件中为手头的语言设置特定于语言的设置。不过,对于新手来说,这应该更清楚一些。;-)

于 2011-10-13T03:18:16.773 回答
9

目前似乎是一个错误(未在 3.5 火车中修复):

错误 44755(用于注释,但也适用于其他重构 JDT 操作)

还链接到错误 231832,涉及 AST 重写中的错误...

我相信这是一个问题ASTRewrite,而不是客户端的问题ASTRewrite。我们必须确保代码格式化程序设置可用于重写部分。
转移到JDT/Core调查。

在 3.4 后期检测到,在 3.5 中仍未修复

于 2010-04-14T10:43:00.167 回答
3

查看 Java / Code Style / Formatter 的首选项
创建您自己的配置文件并将“缩进”/“Tab policy”设置为“Tabs only”

于 2010-04-14T10:33:54.067 回答
2

我确保没有选中“编辑”>“智能插入模式”,当配置缩进和格式设置不起作用时,这似乎对我有所帮助。运行 Eclipse 3.7.0。

于 2011-08-24T22:02:45.173 回答
2

Preferences > Java > Code Style > Formatter > Edit > Indentation > Use tabs only forleading indentation 复选框

于 2010-04-14T10:34:05.597 回答
2

我设置它的方式是在编辑器->保存操作首选项中启用“格式源代码”。

这样,它会在保存时重新格式化源代码。

于 2010-04-14T10:35:33.883 回答
1

即使在文本编辑器首选项中为制表符设置插入空格选项并将我的格式化程序配置文件选项卡策略设置为空格之后,Eclipse 仍在插入制表符字符。只有在从文件中删除所有选项卡后,它才能正确插入制表符空格。发现这一点后,我确定“文本编辑器”首选项中的“为制表符插入空格”选项似乎没有任何效果,正是对“格式化程序配置文件”选项卡策略的更改达到了预期的效果。

于 2011-12-11T00:41:35.830 回答
1

我也有这个问题。问题原来是一些隐藏在我工作区某处的配置。我创建了一个新工作区并重新导入了我的项目,并且我的选项卡不再转换为空格。

于 2010-09-01T14:48:11.590 回答
0

即使其他解决方案不起作用,另一个“对我有用”的解决方案(版本:3.8.1):

首选项 > Java > 代码样式 > 格式化程序 > 编辑 > 缩进 > 使用空格缩进换行 - 设置未选中

这本质上是“智能标签”选项。它适用于格式化程序,但它错误地将代码生成设置为仅使用空格。令人讨厌的是,该解决方案破坏了格式化程序。

于 2015-03-16T19:22:10.540 回答