Eclipse(ctrl + shift + f)无法执行任何操作。

4
我在Gedit中创建了一个新的Java文件。但当我在Eclipse中打开它并使用(CTRL + SHIFT + F)格式化代码时,它无法格式化整个代码文件。尽管其他一些我没有在Eclipse中创建的Java文件和这个特定文件中的单独行都可以被格式化。我已经在以下位置恢复默认设置:窗口 > 首选项 > 通用 > 键盘,但仍然没有任何效果。我没有安装任何插件。请问为什么Eclipse不能识别这个文件需要被格式化呢?

你是否在gedit里保存了一个".java"扩展名的文件? - Elliott Frisch
是的。有问题吗? - Reggie
你处于Java视图吗?根据你所描述的,应该可以正常工作。 - Elliott Frisch
是的,我在Java透视图中。我认为它识别了这一点,因为如果我在行首按Enter键,它会按预期格式化所有内容为单行。 - Reggie
我确定该文档未经格式化。这就是为什么我可以说,在一行的开头按回车键会格式化该行——因为我看到它修复了格式。 (ctrl + a) (ctrl + shift + f) 不起作用,但事实证明 (ctrl + a) (ctrl + i) 可以。 - Reggie
显示剩余3条评论
9个回答

4

我不明白为什么用CTRL+SHIFT+F不能格式化代码,但你可以尝试使用CTRL+A选择整个文档,然后用CTRL+I来格式化文档。可能你也会遇到同样的问题。


2

我也遇到了这个问题。而我是偶然间找到了原因。

我使用的是IBus输入法,当IBus处于中文模式时,在Eclipse Java项目中,Ctrl+Shift+F无法格式化Java源代码。当我将IBus切换到英文模式时,这个快捷键就可以正常工作了。


1

请检查以下内容:

  1. 所选的活动格式化程序配置文件是否正是您想要的(您可以在首选项->Java->代码样式->格式化程序中找到)
  2. 正确选择需要格式化的代码行
  3. 最重要的一点是在进行格式化的文件中没有任何语法错误

1

检查您的文件中是否存在奇怪的语法。在我的情况下,我有一个方法名带下划线参数:

@Deprecated
public synchronized void setParseMaxDigits(int _) {}

我不得不删除文件的某些部分,直到我确定这是导致SHIFT+CTRL+F不能格式化文件的函数。当我将上述方法更改为以下内容时,问题立即得到解决:

@Deprecated
public synchronized void setParseMaxDigits(int unused) {}

然后 SHIFT+CTRL+F 再次开始工作了。

0
以下是对我有效的解决方案:
在“窗口 -> 首选项 -> 通用 -> 键”中,查找所有使用Ctrl+Shift+F快捷方式的命令。为此,请单击绑定列,以使命令按快捷方式排序,然后向下滚动网格。
在我的情况下,还有另一个使用此快捷方式的命令,可能比格式化源命令具有更高的优先级。因此,我只清除了它的绑定字段,并仅留下了使用Ctrl + Shift + F的“格式化”命令。

0
Eclipse只能在Java项目的Java源文件夹中格式化Java文件。它不会对您从文件菜单中打开的随机文件进行格式化。

它在Java源文件夹中。Eclipse可以很好地格式化此文件夹中的其他Java文件。 - Reggie

0

我刚刚遇到了完全相同的问题。自动格式化器似乎只对单个文件无效。我甚至删除并重新创建了该文件,但没有运气。最终,我决定继续工作,突然它又起作用了。

问题是我有一个语法错误(一个随机逗号),自动格式化器不知道如何格式化。修复语法错误允许自动格式化器再次发挥作用。


0

这是由于 Razer Cortex 应用程序引起的问题。它用于启用/禁用其游戏内 FPS 监视器的键绑定与 Eclipse 用于格式化突出显示的代码块的键绑定相同 (Ctrl + Shift + F)。在这方面,该程序优先于 Eclipse。

规避此问题非常简单:

  1. 打开 Razer Cortex 应用程序
  2. 更改禁用显示/隐藏FPS 显示的键绑定

现在您的 Eclipse 格式化键绑定将会生效 :)


0

Lee Duhem的回答让我意识到了问题所在。关键是CTRL + SHIFT + F可能会与其他应用程序冲突,在我的情况下,是语言输入法。

系统:Windows 10

  1. 进入设置语言选项 enter image description here

  2. 打开Microsoft拼音选项 enter image description here

  3. 关闭或更改另一个热键 enter image description here


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