【发布时间】:2010-09-08 11:12:06
【问题描述】:
好吧,这可能是一个蹩脚的问题,但每个人使用这些东西的方式都不同。这个 IDE 有哪些最好的节省时间的方法。
汤姆
【问题讨论】:
好吧,这可能是一个蹩脚的问题,但每个人使用这些东西的方式都不同。这个 IDE 有哪些最好的节省时间的方法。
汤姆
【问题讨论】:
不要忘记 Ctrl+Shift+L,它会显示所有键盘快捷键组合的列表(以防您忘记此处列出的任何一个)。
【讨论】:
似乎没有人提到 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) 快得多。
实际上,我去了 Keys 自定义首选项页面,并为 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/ 上查看更多有用的模板。这里就不一一列举了,因为有很多,而且我经常添加新的。
一些代码补全技巧:
这就是我添加字段的方式。
如果您还没有构造函数,请添加一个。 (在类声明中的任意位置按 Ctrl-Space,选择第一个提议。)
添加一个参数(| 是光标位置):
public class MyClass {
public MyClass(int something|) {
}
}
按 Ctrl-1,选择“分配给新字段”。你得到:
public class MyClass {
private final Object something;
public MyClass(Object something) {
this.something = something;
}
}
如果合适,添加一个空指针检查(参见上面的“npe”模板):
public class MyClass {
private final Object something;
public MyClass(Object something) {
npe|
this.something = something;
}
}
按 Ctrl-空格键,得到:
public class MyClass {
private final Object something;
public MyClass(Object something) {
if (something == null)
throw new NullPointerException("something is null");
this.something = something;
}
}
非常节省时间!
【讨论】:
ctrl-shift-r 及其伙伴 ctrl-shift-t 分别打开资源或类型。 Resources 包括您打开的项目中的所有文件(包括非 java 文件),并且 types 包括您的项目中或项目中包含的库中的 java 类型。
【讨论】:
Crtl+1 是我的最爱。红色曲线的快速修复。
它也位于编辑菜单 -> 快速修复中。
【讨论】:
Ctrl+Shift+O 来组织导入,这将很好地格式化它们,删除不需要的导入,并添加缺失的导入。
【讨论】:
Ctrl-J 开始增量查找。
按 Ctrl-J,然后开始输入。使用向上/向下查找您键入的内容的上一个/下一个实例。
Ctrl-Shift-J 向后搜索。
【讨论】:
键入“syso”,然后按 Ctrl+Space 将其展开为 System.out.println()。
很方便。
【讨论】:
CTRL+3 显示任何菜单命令的预先输入列表。
【讨论】:
【讨论】:
单击方法声明中的返回类型会突出显示该方法的所有退出点。
例如:
1: public void foo()
2: {
3: somecode();
4: if ( blah ) return;
5:
6: bar();
7: }
点击 void 将突出显示第 4 行的 return 和第 7 行的关闭 }。
更新:它甚至适用于 try{} catch 块。如果您将光标放在 catch 块中的异常上,eclipse 将突出显示可能引发该异常的可能方法。
【讨论】:
代码完成支持 CamelCase,例如,输入 CWAR 将显示 ClassWithAReallyLongName 的结果。开始使用此功能,您将永远不会再输入另一个长类名。
(部分从另一个答案复制,因为我认为只有一个提示/提示的答案最适合轮询)
【讨论】:
Alt-Up Arrow 将当前选择向上移动一行,Alt-Down Arrow 将其向下移动。我也一直使用 Alt-Shift-Up/Down Arrow。 Ctrl-K 和 Ctrl-Shift-K 非常方便,查找当前选择的下一个/上一个出现(或最后一个 Find,如果没有选择)。
【讨论】:
可以选择将左大括号和分号自动放置在“正确”位置。您必须启用此功能 - 选择 Window/Preferences 并在搜索框中键入“brace” - 应该很容易找到(这台计算机上没有 eclipse)。效果:
(“|”是光标):
if(i==0|)
现在输入“{”将导致
if(i==0) {|
【讨论】:
Hippie expand/Word Complete,受 Emacs 启发的 afaik:将根据该文件中的其他单词自动完成任何编辑器中的任何单词。在 Java 代码、xml 文件中,随处可见的字符串文字内部自动完成。
Alt + /
【讨论】:
Alt-Shift-R 代表 rename,而不是重构。重构是一个more general term(由the book定义)。
尽管如此,它是我最喜欢的重构之一。其他包括:
Alt-Shift-M:Extract Method(选择代码块或表达式时)
Alt-Shift-L:Extract Local Variable(选择表达式时)
当我不记得(或不想输入)方法的结果类型时,提取局部变量特别有用。假设你的类中有一个方法JdbcTemplate createJdbcTemplate(),编写如下代码:
void someQuery() {
createJdbcTemplate()
}
选择表达式createJdbcTemplate(),点击Alt-Shift-L,输入变量名并回车。
void someQuery() {
JdbcTemplate myTemplate = createJdbcTemplate();
}
【讨论】:
CTRL + D - 删除当前行
【讨论】:
当然,Ctrl+Q 可以转到最后一个编辑位置。 在被电话、老板或其他人打断后非常有用。
【讨论】:
Ctrl + Shift + M:将类的静态方法或静态属性引用更改为静态导入。
之前
import X;
...
X.callSomething();
之后
import static X.callSomething;
...
callSomething();
【讨论】:
Alt+Shift+Up 箭头进行升级选择。 Alt+Shift+Down 则相反。
【讨论】:
Alt+Up 或 Alt+Down 移动线条
【讨论】:
还没有人提到最好的。单击类或方法名称,然后按 Ctrl+T。
你会得到一个快速的类型层次结构。对于类名,您可以看到整个类层次结构。对于方法名称,您将获得显示超类和子类的层次结构,该方法的实现与抽象提及或未提及该方法的类区分开来。
当您在一个抽象方法声明中并很快想看看它在哪里实现时,这是巨大的。
【讨论】:
F3 一直是我的最爱,打开所选项目的定义。
Ctrl+Shift+R 有一个有趣的功能,您可以在搜索时只使用类中的大写驼峰字母(例如键入 CWAR 将显示 ClassWithAReallyLongName 的结果。
Alt+Shift+W > 包资源管理器让浏览大型项目时更轻松。
【讨论】:
一个非键盘快捷键技巧是在您的团队中使用提交集->同步视图在提交之前组织您的更改。
将更改集设置为默认值,您对文件所做的所有更改都将放在该集中,从而可以轻松查看您在处理特定缺陷/功能时所做的更改,以及您在处理特定缺陷/功能时所做的其他更改测试等
【讨论】:
CTRL+SPACE,任何地方,任何地方。
生成 getter 和 setter。
使用字段创建构造函数
提取方法...
重构->重命名
CTRL+O 用于快速大纲。 CTRL+O+CTRL+O 为继承的大纲。
F4 显示类型层次结构
打开调用层次结构以显示调用方法的位置。
CTRL+SHIFT+T 打开一个 Java 类型
CTRL+SHIFT+R 打开任何资源。
ALT + 向左或向右可在文档中的编辑位置前进或后退(轻松导航)
如果您知道要执行很多方法,请覆盖/实施方法(否则,CTRL+SPACE 一次选择一个会更好。
重构->提取接口
重构->上拉
重构->下推
CTRL+SHIFT+O 用于组织导入(当输入通用类名称如 Map 时,按 CTRL+SPACE 然后选择适当的类将直接为您导入)。
CTRL+SHIFT+F 用于格式化(尽管 Eclipse 的内置格式化程序对于长行代码可能有点脑残)
编辑:哦,是的,一些调试:
F5:进入(显示详细信息!)
F6:跳过(我相信你,进入下一部分......)
F7:走出去(我以为我在乎这个方法,但事实证明我不在乎,让我离开这里!)
F8:继续(直到到达下一个断点)
CTRL+SHIFT+I:检查表达式。 CTRL+SHIFT+I+CTRL+SHIFT+I:在被检查的表达式上创建一个监视表达式。
条件断点:右键单击断点,您可以设置一个触发其中断程序执行的条件(此处提供上下文辅助,使用 Ctrl+空格!)
F11 - 调试上次启动(应用程序)
CTRL+F11 - 运行上次启动(应用程序)
【讨论】:
Eclipse 允许您根据发生异常的位置设置断点。
您可以通过调试窗口中的 "j!" alt text http://help.eclipse.org/stable/topic/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.debug.ui/elcl16/exc_catch.png 图标访问该选项。
alt text http://blogs.bytecode.com.au/glen/2007/04/06/images/2007/AddExceptionWindow.png
官方帮助主题“Add Java Exception Breakpoint ”对此有更多说明。
RuntimeException 的异常断点配置为在子类上挂起,它也会被NullPointerException 触发。【讨论】:
Ctrl+Alt+H 在方法上获取调用层次结构。快速查看调用位置的方法。
【讨论】:
Ctrl+Alt+UP 或 Ctrl+Alt+DOWN复制行
【讨论】:
Alt + Shift + R 重构和重命名。
【讨论】:
这是我收集的 Eclipse 3 最有用的键盘快捷键:
Eclipse 3 Favorite Keyboard Shortcuts.
by -=MaGGuS=-
Navigate:
• Ctrl + Shift + L – Shows useful keyboard shortcuts in popup window
• Ctrl + H – Search.
• Ctrl + K – Goes to next search match in a single file. Shift + Ctrl + K – goes to previous match.
• F3 - Goes to ‘declaration’ of something. Same as Ctrl + Click.
• Ctrl + Shift + G - Use this on a method name or variable. It will search for references in the code (all the code) to that item.
• Ctrl + O – Shows outline view of the current class or interface.
• Ctrl + T – Shows class hierarchy of the current class or interface. F4 – shows the same in separate tab.
• Ctrl + Shift + T - Open Type. Search for any type globally in the workspace.
• Ctrl + Shift + R – Open Resource. Search for any file inside workspace.
• Ctrl + J – Incremental search. Similar to the search in firefox. It shows you results as you type. Shift + Ctrl +J - Reverse incremental search.
• Ctrl + Q – Goes to the last edit location.
• Ctrl + Left|Right – Go Back/Forward in history.
• Ctrl + L – Go to line number.
• Ctrl + E – This will give you a list of all the source code windows that are currently open. You can arrow up or down on the items to go to a tab.
• Ctrl +PgUp|PgDown – Cycles through editor tabs.
• Ctrl + Shift + Up|Down - Bounces you up and down through the methods in the source code.
• Ctrl + F7 – Switches between panes (views).
• Ctrl + ,|. – Go to the previous/next error. Great in combination with Ctrl + 1.
• Ctrl + 1 on an error – Brings up suggestions for fixing the error. The suggestions can be clicked.
• Ctrl + F4 – Close one source window.
Edit:
• Ctrl + Space – Auto-completion.
• Ctrl + / – Toggle comment selected lines.
• Ctrl + Shift + /|\ – Block comment/uncomment selected lines.
• Ctrl + Shift + F – Quickly ‘formats’ your java code based on your preferences set up under Window –> Preferences.
• Ctrl + I – Correct indentations.
• Alt + Up|Down – move the highlighted code up/down one line. If nothing is selected, selects the current line.
• Ctrl + D – Delete row.
• Alt + Shift + Up|Down|Left|Right – select increasing semantic units.
• Ctrl + Shift + O – Organize Imports.
• Alt + Shift + S – Brings up “Source” menu.
o Shift + Alt + S, R – Generate getter/setter.
o Shift + Alt + S, O – Generate constructor using fields.
o Shift + Alt + S, C – Generate constructor from superclass.
• Alt + Shift + T – Brings up “Refactor” menu.
• Alt + Shift + J – Insert javadoc comment.
• F2 – Display javadoc popup for current item. Shift + F2 – Display javadoc in external browser.
Run/Debug:
• F11 / Ctrl + F11 – Execute/debug.
• Ctrl + Shift +B – Toggle breakpoint.
• When paused: F5 – Step into, F6 – Step over, F7 – Step out, F8 – Resume.
• Ctrl + F2 – Terminate.
EOF
【讨论】:
不是那么隐藏,但 IMO 是最好的把戏。
假设默认设置(并且您还没有添加新的 sn-ps)
突出显示(或选择)文本(字符串或变量)...按 Ctrl+空格。点击结束+输入。 “sysout” sn-p 被触发,它将选择作为其参数包装。
例如。
"hello world!"
becomes
System.out.println("hello world!");
我非常喜欢它,因此我为 Android 的 Toast 和 Log.i() 实现了类似的 sn-p 手动调试期间节省大量时间....
【讨论】: