codecamp

IDEA与Eclipse的编码协助功能

编码协助

Eclipse和IntelliJ IDEA都提供了编码协助功能,如代码完成、代码生成、快速修复、实时模板等。

快速修复

要在IntelliJ IDEA中应用快速修复,请按Alt+Enter:

IDEA与Eclipse编码协助功能

所有快速修复都基于Settings |检查(Settings | Inspections)中配置的检查 :

IDEA与Eclipse编码协助功能

如果您想一次性将快速修复应用到多个位置(即整个文件夹,模块甚至项目),您可以通过Analyze | 按名称运行检查(Analyze | Run Inspection By Name)运行相应的检查,或通过Analyze |检查代码(Analyze | Inspect Code)运行整批检查:

IDEA与Eclipse编码协助功能

除了彻头彻尾的问题,IntelliJ IDEA还识别可以通过所谓的意图 (也可用Alt+Enter)来改进或优化的代码结构:

IDEA与Eclipse编码协助功能


Eclipse
IntelliJ IDEA
操作快捷键操作快捷键
快速解决Ctrl+1显示意向操作Alt+Enter

生成代码

生成代码的关键操作是:Code | 生成,可通过Alt+Insert实现:

IDEA与Eclipse编码协助功能

此操作是上下文相关的,不仅在编辑器中可用,而且在项目工具窗口和导航栏中也可用 :

IDEA与Eclipse编码协助功能

代码完成

IntelliJ IDEA提供了几种不同类型的代码完成,包括:

  • 基本完成
  • 第二个基本完成
  • 智能完成
  • 第二个智能完成
  • 声明完成

要详细了解这些完成类型之间的差异,请参阅 IntelliJ IDEA中的“前20个代码完成功能”。

默认情况下,IntelliJ IDEA不会显示所选项目的文档(Documentation)弹出窗口,但是您可以在设置/首选项|编辑|代码完成|Autopopup documentatoin (ms)(Settings/Preferences | Editor | Code Completion | Autopopup documentatoin in (ms))中启用它:

IDEA与Eclipse编码协助功能


如果您不想启用此选项,则可以在需要时通过按下Ctrl+Q手动调用此弹出窗口 :

IDEA与Eclipse编码协助功能

当插入符号的方法或构造函数的括号内,你可以通过使用Ctrl+P调用参数信息(Parameter Info)获取参数信息:

IDEA与Eclipse编码协助功能

Eclipse
IntelliJ IDEA
操作快捷键操作快捷键
代码完成Ctrl+Space基本完成Ctrl+Space
--智能完成Ctrl+Shift+Space
--声明完成Ctrl+Shift+Enter

模板

您可能习惯于在编辑器中输入main,然后调用代码完成来将其转换为主方法定义。但是,IntelliJ IDEA模板有点不同:

模板Eclipse
IntelliJ IDEA
定义一个主要的方法mainpsvm
遍历数组foritar
迭代一个集合foritco
遍历一个列表foritli
迭代使用foreach语法的迭代foreachiter
打印到System.outsysoutsout
打印到System.errsyserrserr
定义一个静态字段static_finalpsf

可用模板的列表可以在 Settings / Preferences |编辑|实时模板(Settings/Preferences | Editor | Live Templates)中找到。在那里,你也可以添加自己的模板或修改任何现有的模板。

虽然IntelliJ IDEA建议在代码完成结果中使用模板,但您可以简单地通过按下Tab来轻松扩展任何模板,而无需使用代码完成。

后缀模板

除了“常规”模板之外,IntelliJ IDEA还提供了所谓的后缀模板(postfix template)。当您想要将模板应用到您已输入的表达式时,它们非常有用。例如,键入一个变量名称,添加.ifn并按下Tab。IntelliJ IDEA将把你的表达变成一个 if (...==null){...}声明。

要查看可用的后缀模板的完整列表,请转至设置/首选项| 编辑| 一般| 后缀完成(Settings/Preferences | Editor | General | Postfix Completion)。

使用实时模板环绕

带有模板的环绕是另一种与实时模板类似的附加功能,但可以使用 ctrl+ Alt + J 将其应用于选定的代码。

若要定义您自己的模板环绕,请转至:设置/首选项| 编辑| 一般| 实时模板(Settings/Preferences | Editor | General | Live Templates)并在模板文本中使用$SELECTION$:

$LOCK$.readLock().lock();
try {
   $SELECTION$
       } finally {
   $LOCK$.readLock().unlock();
}

导航

下表粗略地将Eclipse中可用的导航操作与IntelliJ IDEA中的导航操作进行了映射:

Eclipse
IntelliJ IDEA
操作快捷键操作快捷键
快速访问Ctrl+3到处搜索Shift x 2
打开类型Ctrl+Shift+T导航到类Ctrl+N
打开资源Ctrl+Shift+R导航到文件Ctrl+Shift+N
--导航到符号Ctrl+Shift+Alt+N
快速切换编辑器Ctrl+E切换器Ctrl+Tab
--最近的文件Ctrl+E
打开声明F3导航到声明Ctrl+B
开放式的层次结构F4导航到类型层次结构Ctrl+H
--显示UML弹出Ctrl+Alt+U
快速大纲Ctrl+O文件结构Ctrl+F12
后退Ctrl+[后退Ctrl+Alt+Left
前进Ctrl+]前进Ctrl+Alt+Righ

重构

下表将Eclipse中最常见的重构的快捷方式与IntelliJ IDEA中的重构进行了映射 :

Eclipse
IntelliJ IDEA
操作快捷键操作快捷键
提取局部变量Ctrl+Alt+L提取变量Ctrl+Alt+V
分配给字段Ctrl+2提取字段Ctrl+Alt+F
显示重构快捷菜单Ctrl+Alt+T重构当前Ctrl+Shift+Alt+T
重命名Ctrl+Alt+R重命名Shift+F6

撤销

有时,重构可能会影响项目中的许多文件。IntelliJ IDEA不仅负责安全地应用更改,还可以让您恢复它们。要撤消最后一次重构,请将焦点切换到“项目工具”窗口,然后按Ctrl+Z。

搜索

以下是Eclipse和IntelliJ IDEA中最常见的搜索操作和快捷方式的映射:

Eclipse
IntelliJ IDEA
操作快捷键操作快捷键
打开搜索对话框Ctrl+H在路径中查找Ctrl+Shift+F
在工作区中的引用Ctrl+Shift+G找到用法Alt+F7
--显示用法Ctrl+Alt+F7
--查找使用情况设置Ctrl+Shift+Alt+F7
发生在文件中Ctrl+Alt+U突出显示文件中的用法Ctrl+F7
IDEA与Eclipse的快捷键
IDEA与Eclipse的代码格式
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

IntelliJ IDEA的一般准则

什么是IntelliJ IDEA项目

使用IntelliJ IDEA的意图行为

IntelliJ IDEA使用运行/调试配置

特定于VCS的程序

IntelliJ IDEA语言和特定框架指南

IntelliJ IDEA的数据库和SQL功能

IntelliJ IDEA使用之JavaServer Faces(JSF)

IntelliJ IDEA:分析PHP应用程序的性能

IntelliJ IDEA:调试PHP应用程序

IntelliJ IDEA:适用于PHP的Google App Engine

IntelliJ IDEA更多内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }