Eclipse的隐藏功能

97

好的,这可能是一个简单的问题,但每个人使用这些工具的方式都不同。那么,有哪些在这个集成开发环境中最好的时间节省工具呢?

汤姆

73个回答

139

不要忘记 Ctrl+Shift+L,它会显示所有键盘快捷键组合的列表(以防您忘记此处列出的任何快捷键)。


1
对于使用 Mac 的初学者,请在此处列出的所有命令中使用 COMMAND 按钮,而不是 CTRL。我花了一些时间才弄清楚这个问题。这可能会帮助到某些人。 - 500865

119

Ctrl-2 something

似乎没有人提到 Ctrl-2 L(分配给新的局部变量)和 Ctrl-2 F(分配给新字段),这些功能改变了我编写代码的方式。

以前,我会输入以下内容(| 表示光标位置):

Display display = new |

然后我按下Ctrl-Space键以完成构造函数调用。现在我要输入:

new Display()|

然后按下Ctrl-2 L,结果如下:

Display display = new Display()|

这真的可以加速事情的进行。(Ctrl-2 F也可以完成同样的任务,但是它将赋值给一个新的字段而不是一个新的变量。)

另一个好用的快捷键是Ctrl-2 R:在文件中重命名。当重命名本地变量等内容时,它比重构重命名(Alt-Shift-R)要快得多。

事实上,我去了“键盘定制首选项”页面,并将各种附加的快速修复分配给Ctrl-2-something。例如,我现在按Ctrl-2 J来拆分/联接变量声明,按Ctrl-2 C来将内部类提取为顶级类,按Ctrl-2 T向函数添加throws声明等。有大量可分配的快速修复方法,选择您最喜欢的并将它们分配给Ctrl-2快捷方式。

模板

我的另一个最喜欢的是“npe”模板,定义如下:

if (${arg:localVar} == null)
    throw new ${exception:link(NullPointerException,IllegalArgumentException)}("${arg:localVar} is null");

这使我能够在每个函数的开头快速添加空参数检查(尤其是那些仅将参数保存到字段或添加到集合中的函数,尤其是构造函数),这对于早期检测错误非常有用。

查看更多有用的模板,请访问www.tarantsov.com/eclipse/templates/。 我不会在此列出它们,因为有很多,并且我经常添加新的模板。

完成

一些代码自动补全技巧:

  • 驼峰式支持:输入cTM,获得currentTimeMillis
  • 默认构造函数:在没有默认构造函数的类声明中按Ctrl-Space,第一个选项将是创建默认构造函数
  • 重载:在类声明中开始输入要重载的方法名称,按Ctrl-Space并选择一个
  • getter/setter创建:输入“get”,按Ctrl-Space,选择要创建的getter; 输入“is”和“set”同理

分配到新字段

这就是我如何添加字段。

  1. If you have no constructors yet, add one. (Ctrl-Space anywhere in a class declaration, pick the first proposal.)

  2. Add an argument (| is cursor position):

    public class MyClass {
        public MyClass(int something|) {
        }
    }
    
  3. Press Ctrl-1, choose “assign to a new field”. You get:

    public class MyClass {
        private final Object something;
        public MyClass(Object something) {
            this.something = something;
        }
    }
    
  4. Add a null-pointer check if appropriate (see “npe” template above):

    public class MyClass {
        private final Object something;
        public MyClass(Object something) {
            npe|
            this.something = something;
        }
    }
    

    Hit Ctrl-Space, get:

    public class MyClass {
        private final Object something;
        public MyClass(Object something) {
            if (something == null)
                throw new NullPointerException("something is null");
            this.something = something;
        }
    }
    
一个非常省时的工具!

2
CTRL+2,F 和 CTRL+2,L 现在让我的世界更美好。谢谢。 - Joshua McKinnon
14
如果你的模板使用花括号就好了…… - rsp
3
抱歉,我不喜欢插入不必要的大括号。顺便提一下,Eclipse有一个代码清理功能,可以让您的代码使用任何样式的大括号(始终或仅在需要时),并且可以在保存时应用它。 - Andrey Tarantsov

81

使用ctrl-shift-r打开资源,使用ctrl-shift-t打开类型。资源包括所有在您的打开项目中的文件(包括非Java文件),类型包括您的项目中或者项目中包含的库中的Java类型。


6
使用 ctrl+shift+r 也可以方便地打开类型,特别是当你刚刚打开一个工程时,因为它不需要进行索引。 - boutta
好的观点。但是,Ctrl-Shift-R无法用于打开引用jar库中的类型,它只能用于项目中的单个文件(资源)。 - pkaeding
这绝对是Eclipse中最有用的功能,而在Netbeans中实现得不太好(即较慢)。 - Rahul

60

Ctrl+1 是我最喜欢的快捷键。它可以快速修复文本中出现的红色波浪线错误。

此选项也可以在“编辑”菜单-〉“快速修复”中找到。


2
Ctrl+.(句号)可以跳转到下一个错误(红色/黄色波浪线)......使用这两个功能,您就处于错误修复模式中。 :D - st0le

59

Ctrl+Shift+O 可以整理导入的内容,让它们格式整齐、移除不必要的导入并添加缺失的导入。


6
我注意到这个工具不仅可以用来整理一个文件,还可以用来整理整个项目或其中的一部分。非常有用。 - Antti Kissaniemi
我会尝试这样做,但是这会将 import java.util.* 更改为实际需要的导入吗? - Thomas Owens
这个小的按键组合是我最初开始使用Eclipse的主要原因之一。非常有帮助! - Rich Adams
11
是的,它是可配置的。请注意,自Eclipse3.3以来,您可以要求Eclipse在保存时自动组织导入(Java > Editor > Save actions)。 - Romain Linsolas
我已经将“整理导入”设置为保存操作。非常方便。 - JesperE
显示剩余2条评论

48

Ctrl-J开始增量查找。

按下Ctrl-J,然后开始输入。使用上/下键查找先前/后续的所输入内容。

Ctrl-Shift-J向后搜索。


9
选择一个单词,然后按下Ctrl-K或Ctrl-Shift-K,它将迭代选定字符串的出现。 - Newtopian
@Newtopian - ctrl-k 是在文件中快速查找引用的最有用的快捷键之一。 - RodeoClown

37

输入'syso'然后按下Ctrl+Space可以将其展开为System.out.println()。

非常方便。


1
根据这个:syse 将被扩展为 System.err.println(); - guerda
任何键盘组合都可以配置,查看我的答案如下。 - Ravisha

31

CTRL+3 会弹出一个菜单命令的类型列表。


29
  • CTRL-SHIFT-g:查找光标下方法或字段的使用情况,对于理解代码绝对必要
  • CTRL-F6:在打开的编辑器窗口列表之间导航,如果您只键入一次并松开,则切换回上一个编辑器窗口,连续执行此操作可以轻松地来回跳转
  • CTRL-t:在类或方法上会显示类型层次结构,非常有用,例如用于查找接口方法的实现

1
我使用一只带有5个按键的鼠标,并将F6映射到其中一个按钮上,以便快速导航。 - s_t_e_v_e
许多按钮的鼠标被低估了。这是个好主意。我只是担心自己无法养成习惯,如果养成了,切换机器(工作台式电脑、工作笔记本电脑、家用台式电脑等)会有困难。 - Boris Terzic
1
我知道我可以更改它,但我希望CTRL-F6默认情况下是其他功能。我无法单手操作它。 - Albert
1
F4也会默认打开类型层次结构。它与跳转到光标下内容定义的F3键相邻,非常方便。 - Mike Daniels
Ctrl-Shift-G 的一个问题是它在整个工作区中搜索引用,而当前项目对我来说更有用... - Nils Weinander
5
重新映射Ctrl-F6为Ctrl-Tab是必要的。这很自然易懂,就像在浏览器中切换选项卡一样。 - espinchi

28

在方法声明中点击返回类型会突出显示该方法的所有退出点。

例如:

1: public void foo()
2: {
3:   somecode();
4:    if ( blah ) return;
5:
6:    bar();
7: }

点击void会突出显示第4行的return和第7行的闭合}

更新:它甚至适用于try{} catch块。如果将光标放在catch块中的异常上,Eclipse将突出显示可能引发该异常的方法。


现在他告诉我 :) 很有用...特别是当阅读冗长可怕的方法时... - dstibbe

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