主题
Java
![](/idea/whatsnew/2019-1/img/JavaExtractVariableFieldInitializer-1.png)
![](/idea/whatsnew/2019-1/img/JavaRefactoring-1.png)
Extract variable 重构增强
“extract variable”重构得到显著改进,现在它比之前能够更好地保留语义。 IDE 甚至可以从字段初始值设定项提取变量,如果条件重要,“extract variable”重构可以将三元表达式自动转换为 ‘if’。 如果条件含有 null 检查或者 ‘instanceof’ 检查,则被视为重要。
![](/idea/whatsnew/2019-1/img/JavaDFATernary.png)
在三元表达式中准确地高亮显示警告
IntelliJ IDEA 2019.1 可确保为三元表达式提供更准确的警告。 它只高亮显示检测到违反可空性的条件(而在以前,即使只有一个分支违反了可空性,它也会高亮显示整个三元表达式)。
得益于这项功能,switch 表达式的高亮显示也更加准确。
改进了数学运算分析
数据流分析可以跟踪数学运算结果,并使用此信息来警告您始终为真或假的条件。 我们改进了许多数学运算的分析,包括乘法、余数和逐位运算。
![](/idea/whatsnew/2019-1/img/JavaNavigateStackTraces-1.png)
从 Java 堆栈跟踪导航到行中的相关位置
当您点击 Java 堆栈跟踪时,IDE 将尝试确定行中的确切位置并将光标移动到该位置。 以前,它只会将您带到相应行的第一列。
![](/idea/whatsnew/2019-1/img/JavaDuplicates-1.png)
检测重复的 switch 分支
IDE 现在可以检测重复的 switch 分支,并提供快速修复以合并这些分支。
Gradle
![](/idea/whatsnew/2019-1/img/GradleDelegate.png)
将每个 Gradle 项目的生成和运行操作委托给 Gradle 集
现在可以将每个项目的生成和运行操作单独委托给 Gradle。 如果您的 IntelliJ IDEA 项目由数个 Gradle 项目组成,可为每个 Gradle 项目配置此选项。 您甚至可为同一项目的测试运行程序和应用程序运行程序设置不同值。
在 IntelliJ IDEA 2019.1 中,新 Gradle 项目的生成和运行操作默认委托给 Gradle。
![](/idea/whatsnew/2019-1/img/GradleRunTask.png)
正确选择要从编辑器运行的 Gradle 测试任务
在 IntelliJ IDEA 2019.1 中,我们改进了对具有多个 Gradle 源代码集的项目的支持,其中测试执行被委托给 Gradle。 现在,IDE 能够正确解析在运行具体测试时应执行的任务。 如果有多个选项,IDE 将提供可以运行选定测试的所有任务的列表。
当生成操作委托给 Gradle 或 Maven 时,HotSwap 将会工作。
现在,当您调试委托给 Gradle 的生成操作时,将触发 HotSwap,并且生成项目时会重新加载类。
同样,当生成操作委托给 Maven 时,HotSwap 将会工作。
Maven
![](/idea/whatsnew/2019-1/img/MavenDiagramDuplicates-1.png)
![](/idea/whatsnew/2019-1/img/MavenDiagramBorderless-1.png)
![](/idea/whatsnew/2019-1/img/MavenDiagramNeighbours-1.png)
![](/idea/whatsnew/2019-1/img/MavenDiagramShowPaths-1.png)
改进了 Maven 图表
Maven 图表得到增强,并扩展了新选项。 您可以使用“Show Conflicts/Duplicates”轻松找到冲突和重复的依赖项。 要查看节点的所有路径,请点击“Show Paths: Root -> Selection”。
如果您只需要查看某个节点的依赖项,请选择“Show Neighbors of Selected Nodes”。 您还可以将图表切换为无边界视图。
版本控制
![](/idea/whatsnew/2019-1/img/VCSFixup.png)
在 VCS 日志中增加 Fixup 和 Squash 操作。
从 VCS Log 标签页的上下文菜单调用 Fixup 和 Squash 操作,这些操作将使用正确的修复创建提交! 还有 squash! 提交消息。
![](/idea/whatsnew/2019-1/img/VCSCherryPick.png)
能够直接从 VCS 日志精选某些文件
借助 IntelliJ IDEA 2019.1,您现在可以在 VCS 日志中时从提交精选文件。 只需调用上下文菜单,并选择“Apply Selected Changes”选项。
![](/idea/whatsnew/2019-1/img/VCSArrows.png)
指示传入和传出提交
在“分支 (Branches)”弹出窗口中现在提供选项,可以查看各个分支的传入和传出提交的可用性。 您需要在 Preferences/Settings | Version Control | Git 中打开“Mark Branches that have incoming/outgoing commits in the Branches popup”选项。
![](/idea/whatsnew/2019-1/img/VCSRecentlyDeletedNode-1.png)
可以恢复删除的搁置文件
您现在可以查看最近删除的所有文件,并恢复任何有用的搁置文件。 只需使用 VCS 工具窗口 Shelf 标签页中新的“Recently Deleted”节点。
![](/idea/whatsnew/2019-1/img/VCSUncheckAll-1.png)
为部分 Git 提交新增“Uncheck all”复选框
为了更加方便,我们在 Commit Changes 对话框的 Diff 窗格中添加了新的“Uncheck all”复选框,您现在可以一次轻松取消选择所有代码块。
![](/idea/whatsnew/2019-1/img/VCSAnnotations.png)
查看 VCS 注释的作者首字母的模式
您现在可以在 VCS 注释中查看作者的首字母而不是其全名。 右键点击 Annotation 标签页,然后从上下文菜单选择 View | Names | Initials。
Diff
![](/idea/whatsnew/2019-1/img/DiffDragDrop-1.png)
通过将文件拖放到空白的 Diff 窗口来添加文件内容
现在可以通过拖放文件的方式在空白的 Diff 窗口中复制和粘贴文本。
![](/idea/whatsnew/2019-1/img/DiffSwitchSides-1.png)
在 diff 查看器中换边比较文件
如果您通过“Compare two files”、“Compare with clipboard”或“Blank Diff”打开文件,现在可以交换在 diff 查看器中比较文件的位置。 只需选择“Swap Sides”即可切换文件显示顺序。
Swap Sides 也可用于比较目录。
![](/idea/whatsnew/2019-1/img/DiffCharUnit.png)
按照字符单元预览差异
现在,您可以按照字符单元,而不仅仅像以前在 diff 查看器中一样按单词来查看差异。 如果源代码包含来自不同字母表的任何字符行(例如日语),则可能非常有用。
最近的位置弹出窗口
试试全新的“Recent Locations”导航弹出窗口,其中显示最近访问和更改的所有代码位置。 您访问过的所有位置都按时间顺序排列在此弹出窗口中,其中最近访问的位置列于顶部,最早访问的位置列在底部。 要调用新的“Recent Locations”弹出窗口,请按 Cmd-Shift-E / Ctrl-Shift-E。
JVM 调试器
支持在调试器评估程序中使用 ‘synchronized’、‘assert’ 和 ‘switch’
调试器评估器现在支持同步 (synchronized) 语句、断言表达式和 switch 语句。
![](/idea/whatsnew/2019-1/img/DebuggerStepOut-1.png)
在 JVM 调试器中逐步跳出代码块
现在可以在调试 Java 项目时逐步跳出 (Step Out) 当前代码块。 可以从主菜单 | Run 调用这个新操作。
![](/idea/whatsnew/2019-1/img/DebuggerRunToPointer-1.png)
新的“Run to mouse pointer”鼠标手势
现在,如果您更喜欢在调试模式下使用鼠标,可以将鼠标悬停在代码行上,IDE 将突出显示该行,如果随后点击行号,IDE 将执行“运行到光标”操作。
Scala
高亮显示 for-comprehensions
IntelliJ IDEA 2019.1 增强了对 for-comprehensions 的支持,包括错误高亮显示、隐含提示和 GoTo / Quick Definition / Quick Documentation 操作。
![](/idea/whatsnew/2019-1/img/Scala02findusages2.png)
查找隐式元素的用法
现在可以在隐式定义 apply / unapply 方法、for-comprehension 方法和单一抽象方法 (Single Abstract Method (SAM)) 类型上调用 Find Usages。
![](/idea/whatsnew/2019-1/img/Scala03decompiletojava.png)
反编译为 Java
现在,即使 Scala .class
文件没有源代码,您也可以将其反编译为 Java。
![](/idea/whatsnew/2019-1/img/Scalascalafmt.png)
可自定义的 Scalafmt 版本
我们从 IntelliJ IDEA v2018.2 开始支持 scalafmt 格式化程序,而在此版本中,我们增强了这项功能。 IntelliJ IDEA 不仅让您可以使用自定义 Scalafmt 版本,该 IDE 现在还可为您下载所需版本。
![](/idea/whatsnew/2019-1/img/Scalahocon.png)
单独的 HOCON 插件
我们将对 HOCON 的支持提取到一个单独的仓库和插件中,您可以根据需要安装和卸载。
![](/idea/whatsnew/2019-1/img/Scalahighlighting2.png)
错误高亮显示改进
在此版本中,我们显著改进了多个领域的错误高亮显示,包括:
- 部分统一和一般类型变量统一。
- 构造函数高亮显示,调用私有构造函数。
Better-monadic-for
编译器插件:`implicit0`
功能。Kind-projector
:值水平多态 lambda。Simulacrum
:参数数量更多的构造函数。
Groovy
支持 Groovy 3.0 的 Java 风格的 Lambda 语法
IntelliJ IDEA 2019.1 支持实验性 Groovy 3.0 功能 - Java 风格的 Lambda 语法。 IDE 为其提供编辑支持,包括代码补全、高亮显示和类型推断。 Groovy 意图和检查在 lambda 正文内也可正常运行。 也可以格式化和调试 Java 风格的 lambda。
Kotlin
IDE 绑定的 Kotlin 插件已更新至 v1.3.21
![](/idea/whatsnew/2019-1/img/KotlinMain-1.png)
生成无参 ‘main’ 的动态模板
从 Kotlin 1.3 起,您可以使用无参 main 函数。 因此,在此版本的 IntelliJ IDEA 中,您可以使用 ‘main’ 动态模板创建无参 main 方法。
请注意:现在默认的 ‘main’ 缩写会创建新版 main 方法。 如需传递某些参数,请使用 ‘maina’ 缩写。
![](/idea/whatsnew/2019-1/img/KotlinConvertConcatenation-1.png)
字符串转换改进
“Convert concatenation to template”意图现在可以移除各参数不必要的 .toString() 调用。
![](/idea/whatsnew/2019-1/img/KotlinToAnonymousObj-1.png)
将 SAM 作为 lambda 转换为匿名对象的新意图
如果需要用 SAM 将使用 lambdas 的构造转换为匿名对象,请使用这个方便的意图操作。
![](/idea/whatsnew/2019-1/img/Kotlincoroutines-1.png)
改善协程代码的意图操作
当您处理协程时,IntelliJ IDEA 会建议为返回 ‘Deferred’ 的函数增加“Async”后缀。
JavaScript和TypeScript
![](/idea/whatsnew/2019-1/img/Webjs-destructuring.png)
用于 JavaScript 解构的新意图
IntelliJ IDEA 2019.1 有一套新的重构和意图来帮助您在 JavaScript 或 TypeScript 代码中使用解构。
![](/idea/whatsnew/2019-1/img/Webconvert-to-async-function.png)
将带有 Promise 的函数转换为 async/await 的意图
将返回带有 .then() 和 .catch() 调用的 promise 的函数更改为使用 async/await 语法的异步函数。 只需在函数名称上按 Alt-Enter,然后选择 Convert to async function 即可使用这个快速修复。 这项功能适用于 TypeScript、JavaScript 和 Flow。
![](/idea/whatsnew/2019-1/img/Webcss-docs.png)
更新了 CSS 和 HTML 文档
CSS 属性、HTML 标签和属性的快速文档 (F1 / Ctrl-Q) 现在显示来自 MDN 的简述,包括它与最流行的浏览器的兼容性。
![](/idea/whatsnew/2019-1/img/Webjs-debug-console.png)
改进了 JavaScript 调试器控制台
JavaScript 和 Node.js 调试工具窗口的交互式调试器现在使用树形视图显示对象,它支持使用 CSS 设置日志消息风格,并使用 console.group() 和 console.groupEnd() 将其分组。 它还让您可以筛选出任何类型的日志消息。
Docker
![](/idea/whatsnew/2019-1/img/DockerDebug-1.png)
能够在 Docker 容器内调试
现在,您可以将调试器附加到在 Docker 容器内运行的 Java 应用程序。 IDE 现在允许在从 Dockerfile 生成或使用 Docker compose (docker-compose.yml) 创建的容器内部调试。
Kubernetes
![](/idea/whatsnew/2019-1/img/K8sExternalResources-1.png)
外部资源支持
IntelliJ IDEA 2019.1 支持外部资源,意味着现在您可以从外部源加载自定义资源定义规范。 目前,这只能从本地文件实现。 要添加规范,请转到 Preferences/Settings | Languages & Frameworks | Kubernetes,然后添加自定义资源定义规范的路径。
编辑器
![](/idea/whatsnew/2019-1/img/EditorExportCodeStyle.png)
将代码样式设置导出至 JSON 的选项
现在可以从 IntelliJ IDEA 将所有代码样式设置导出值 JSON ,即使它们与默认设置匹配。 转到 Preferences/Settings | Editor | Code Style,然后从下拉菜单中选择“Export | IntelliJ IDEA code style JSON”选项。
![](/idea/whatsnew/2019-1/img/EditorSoftWrap.png)
支持根据文件类型进行自动换行
可以将自动换行限制为特定的文件类型,只需转到 Preferences/Settings | Editor | General 并使用 Soft-wrap files 字段。
![](/idea/whatsnew/2019-1/img/EditorctrlY.png)
在 Windows 系统上按下 Ctrl-Y 显示 Keymap Configuration 对话框。
当您初次在 Windows 系统上按下 Ctrl-Y,将显示按键映射配置,要求为 “Delete Line” 或 “Redo” 分配快捷键。
![](/idea/whatsnew/2019-1/img/EditorSublimeTextKeymap.png)
Sublime Text 按键映射
我们继续为 IntelliJ IDEA 新增预配置的按键映射,在 v2019.1 中,我们添加了 Sublime Text 按键映射。 转到 Preferences/Settings | Keymap,然后从 Keymap 下拉列表中选择 Sublime Text,就是这么简单! 现在可以在 IntelliJ IDEA 使用 Sublime Text 的快捷键了。
![](/idea/whatsnew/2019-1/img/EditorVSCode.png)
VS Code Keymap 插件
您现在可以使用预配置的 VS 代码按键映射,我们已将其作为单独的插件提供! 安装此插件并在 Preferences/Settings | Keymap 中选择“VS Code keymap”。
支持 Groovy 3.0 的 Java 风格的 Lambda 语法
IntelliJ IDEA 2019.1 支持实验性 Groovy 3.0 功能 - Java 风格的 Lambda 语法。 IDE 为其提供编辑支持,包括代码补全、高亮显示和类型推断。 Groovy 意图和检查在 lambda 正文内也可正常运行。 也可以格式化和调试 Java 风格的 lambda。
Spring Cloud Stream
Spring Cloud Stream 编辑支持
IntelliJ IDEA 为 Spring Cloud Stream 项目提供丰富的编辑支持,例如,语法高亮显示、检查、快速修复和代码补全(包括针对 application.properties 或 application.yml 文件中的值和引用的绑定器名称补全)。
![](/idea/whatsnew/2019-1/img/SpringCloudStreamNavigation-1.png)
在受约束的生产者与消费者之间导航
您现在可以使用装订区域图标在受约束的消费型与生产型消息处理程序之间导航。 请记住,在 application.properties 或 application.yml 文件中,消费者和生产者应该通过 ‘spring.cloud.stream.bindings’ 配置键受到约束。
Thymeleaf
![](/idea/whatsnew/2019-1/img/ThymeleafNavigation-1.png)
![](/idea/whatsnew/2019-1/img/ThymeleafRename-1.png)
改进的 Thymeleaf 支持
现在,您可以导航到在 ‘th: replace’ 和 ‘th: include’ 属性中引用的模板片段。 代码补全和 Rename 重构现在也适用于这些包含和替换的片段。
数据库工具
![](/idea/whatsnew/2019-1/img/DataBaseApacheHive.png)
Greenplum、Vertica 和 Apache Hive 支持
IntelliJ IDEA 支持下列新数据库:
- Greenplum - 基于 PostgreSQL 的分析数据库。
- Vertica - 面向列,旨在处理大量数据的存储。
- Apache Hive - 基于 Apache Hadoop 构建的数据仓库,用于提供数据查询和分析。
![](/idea/whatsnew/2019-1/img/DataBaseConnectionDialog.png)
改进的连接对话框
我们重新设计了连接对话框的外观并添加了几个重要设置。 您现在可以在 ‘startup script’ 字段添加 SQL 查询,该字段在每次建立连接时都会运行。 此外,您可以设置 IDE 自动断开连接之前的超时,或设置时间间隔,每 N 秒查询一次以保持连接有效。