GoLand 最新变化

GoLand 2021.3 原生支持 WSL 中的 Go 项目Inline Function(内联函数)重构,并支持处于测试模式的远程开发

从这个版本开始,保存时运行 gofmt 默认处于启用状态。 GoLand 2021.3 对调试器进行了一些改进,例如 ARM64 的 DelveShow Types(显示类型)选项等。

新增了两个用于将字符串转换为数字的后缀,一个用于带有 testify 断言的表测试的新模板,以及对结构标记中值的更好补全。

像往常一样,新的 GoLand 版本带来了 Web 开发增强和用于处理数据库的多项新功能。

如果您更喜欢互动式学习方式,可在欢迎屏幕上完成 What's New in GoLand 2021.3(GoLand 2021.3 最新变化)教程。

WSL 支持

在 WSL 中创建项目和在 WSL 中选择 SDK

我们添加了在 WSL 中打开项目和指定其中 SDK 的功能。

如果您在 WSL 中创建了一个新项目(或打开了一个现有项目),GoLand 会告知您必须在 WSL 中为此项目使用 Go SDK。 您可以下载 Go SDK 或在 \\wsl$ 子目录中选择现有 SDK。

格式化程序

保存文件时设置代码格式

保存时 gofmt

Reformat code(重新设置代码格式)选项现在默认启用,可让您在保存时运行 gofmt 和 GoLand 自己的格式化程序。

保存时弹出窗口显示代码格式设置通知

此变化可能会让部分用户感到意外,因此我们特别添加了一个通知,在每个项目中显示一次。 您可以点击 Don’t show again(不再显示)将其关闭。

您可以点击 Edit actions on save(编辑保存时的操作),IDE 随后将打开 Settings | Tools | Actions on save (设置 | 工具 | 保存时的操作),供您管理设置。

重构

Inline Function(内联函数)和 Inline Method(内联方法)

函数和方法的 Inline(内联)重构现已可用。 要开始尝试,首先将文本光标置于函数、方法或调用上,然后按 Ctrl + Alt + N

调用 Inline(内联)重构时,会打开一个带有多个选项的弹出窗口。 在此弹出窗口中,您还可以打开 Refactoring Preview(重构预览),它能够帮助您找到方法或函数的所有调用。

补全

代码补全为结构标记中的值建议不同的选项

更好地处理结构标记中的值样式

我们改进了在结构字段中添加标记时 camelCasesnake_case 等不同类型复合词的处理方式。

填写标记时,GoLand 会建议一个包含多个选项的列表。 选择一个选项后,IDE 会记住您的选择,并首先在列表中为此结构中的其他字段建议相同的样式。

后缀补全

使用后缀将字符串转换为数字

用于字符串到数字转换的新后缀

我们增加了多个可将字符串转换为数字的后缀。 在双引号内输入一个数字,然后输入一个点,GoLand 就会建议两种数字解析选项:parseIntparseFloat

Show Usages(显示用法)

使用 Show Usages(显示用法)选项时查看源文件

源预览

Show Usages(显示用法)功能已得到改进,现在点击方形图标即可为找到的用法打开源代码预览。

运行目标

在远程目标上配置文件夹

为源和可执行文件配置文件夹

现在,您可以为远程计算机上存储项目源和可执行文件的文件夹指定有意义的名称。 要配置文件夹,请转到 Run | Manage targets | Additional Settings(运行 | 管理目标 | 其他设置)。

项目级默认运行目标设置

项目级默认运行目标

现在,可以设置项目级默认运行目标。 转到 Run | Manage targets(运行 | 管理目标)。 包含 Project default target(项目默认目标)选项的窗口随即打开。 如果您为项目选择了特定目标,则所有新配置都将使用此目标创建。

SSH 配置窗口中的代理设置

SSH 连接的代理支持

我们在 SSH Configurations(SSH 配置)中添加了新的 HTTP/SOCKS Proxy(HTTP/SOCKS 代理)版块供您指定代理服务器。 您可以在 Settings | Tools | SSH Configurations(设置 | 工具 | SSH 配置)中找到此部分。 或者从打开的项目转到 Run | Manage Targets | …(运行 | 管理目标 | …)

调试器

调试器中 nil 接口的新表示

nil 接口的更好表示

Go 中的接口有两个组件,一个是类型,另一个是该类型的值。 要使接口为 nil,这两个组件都必须是 nil

如果接口的值包含指向 intnil 指针,则该接口将不等于 nil,因为内部类型不是 nil(而是 *int)。 这可能会令人困惑。

为了检测此类情况,我们更改了 Debug(调试)工具窗口 Variables(变量)标签页中接口的表示方式。 例如,如果您有一个内部类型为 *int 且值为 nil 的接口,它将显示为:{interface{} | *int} *int(nil)

2021.2 和 2021.3 中软件包名称表示方式的区别

Variables(变量)标签页中的短软件包名称

GoLand 不再在调试器的 Variables(变量)标签页中显示完整的软件包名称。 您现在只会看到全名的最后一部分。

演示 Show Types(显示类型)的运作方式

隐藏/显示对象类型

如果对象类型在 Variables(变量)标签页中占用空间过多,您可以右键点击标签页区域,在出现的菜单中停用 Show Types(显示类型)选项。 在同一菜单中,您也可以再次选择,将其重新开启。

为 ARM64 构建的 Delve 可执行文件已在 GoLand 中可用

Linux ARM64 的 Delve

从此版本开始,GoLand 将捆绑为 ARM64 架构构建的 Delve,同时,Linux ARM 上的调试开箱即用。

我们还改进了当 GoLand 没有为特定架构捆绑 Delve 时的错误消息。 IDE 现在会明确通知问题。

测试

使用 testify 断言生成代码

testify 断言的模板

我们为带有 testify 断言的表测试添加了一个新模板。 如果您已经在软件包中使用 assert,那么按 Alt + Ins 和选择必要选项时,GoLand 将使用断言生成一些代码。

新的快速修复

使用快速修复正确设置字符串格式

错误字符串格式设置的快速修复

GoLand now has a quick-fix for an inspection that warns you about incorrect formatting of error strings: “Error strings should not be capitalized or end with punctuation”. 按 Alt + Enter,GoLand 将建议修正字符串格式。

使用快速修复导出类型

Export type(导出类型)快速修复

如果您编写了返回未导出类型的已导出函数,GoLand 会建议通过快速修复来导出该类型。

其他 Go 相关变化

弹出窗口显示 context.TODO() 的相关信息

context.TODO() 检查

我们添加了一个高亮显示 context.TODO() 用法的检查。 您可以在 Settings | Editor | Inspections(设置 | 编辑器 | 检查)中将其启用。 如果在编写时不清楚应该使用哪个 Context,该检查将用作更改 context.TODO() 的提醒。

使用 Implement Methods(实现方法)操作时添加 TODO 注释

//TODO implement me 注释

我们为使用 Implement Methods(实现方法)操作时生成的模板添加了 //TODO implement me 注释。 这些特殊注释将在编辑器中高亮显示、已编制索引并列在 TODO 工具窗口中,允许它们用作未实现的方法。

远程开发

GoLand 欢迎屏幕的 Remote Development(远程开发)部分

GoLand 现已支持测试版本的远程开发工作流。

您可以直接从 GoLand 的欢迎屏幕设置远程开发工作流。 或者,您也可以使用我们的新应用程序 JetBrains Gateway,它被用作所有远程后端的入口点。

此页面上了解如何开始远程开发。

HTTP 客户端

在 http 文件中添加 grpc 请求

对 gRPC 请求的支持

GoLand 的 HTTP 客户端现已支持 gRPC 请求并可提供补全。 以 GRPC 关键字开始请求,HTTP 客户端会将其视为 gRPC 请求。

点击 proto 文件中的装订区域图标生成 gRPC 请求

点击 .proto 文件中的装订区域图标,即可在 HTTP 客户端中自动生成 gRPC 请求。

执行服务器流远程过程调用

目前,HTTP 客户端可以执行一元和服务器流 RPC。 与普通 HTTP 请求一样,请求正文和响应均为纯 JSON 文件。

您可以在此处阅读其他的 HTTP 客户端改进。

VCS 增强功能

执行 Checkout and Rebase onto Current(签出并变基到当前分支)操作

远程分支的 Checkout and Rebase onto Current(签出并变基到当前分支)

Checkout and Rebase onto Current(签出并变基到当前分支)操作可用于签出所选分支并将其变基到当前签出分支的顶部。 现在它可用于远程分支。

执行 Push All up to Here(推送此前所有提交)操作

新的 Push All up to Here(推送此前所有提交)操作

有时,您可能会已经准备好要发布一些提交,而其他的提交却仍在进行中。 在这种情况下,您可能需要仅推送您确定要发布的提交。

现在,您可以推送您在 Git 工具窗口的 Log(日志)标签页中所选及其之前的提交。 为此,首先右键点击停止处的提交,调用上下文菜单,然后选择 Push All up to Here(推送此前所有提交)操作。

版本控制设置

重新组织了 VCS 设置

我们使 VCS 设置更加醒目直观。 Settings(设置)中的 Version Control(版本控制)节点现在将列出所有可用设置。

UI 改进

Variables(变量)标签页的 Evaluate expression(计算表达式)栏

Variables(变量)标签页的 Evaluate expression(计算表达式)栏

Debug(调试)工具窗口的 Variables(变量)标签页现已提供 Evaluate expression(计算表达式)功能。

拆分 Run(运行)工具窗口中的标签页

拆分 Run(运行)工具窗口中的标签页

现在,将标签页拖放到高亮显示区域即可拆分 Run(运行)工具窗口。 要取消拆分窗口,请右键点击顶部窗格并从上下文菜单中选择 Unsplit(取消拆分)。

使用 Bookmarks(书签)窗口

新的 Bookmarks(书签)窗口

我们有了新的 Bookmarks(书签)工具窗口。 从现在开始,您使用 F11 标记为重要的文件和文件夹都将位于此窗口中。

分析器

比较两个快照并在火焰图上呈现差异

呈现快照中的差异

您可以在火焰图上呈现两个快照之间的差异。 按两下 Shift,然后在搜索栏中键入“Open Profiler Snapshots”(打开分析器快照)。 从列表中打开一个快照,重复相同的操作,然后打开另一个。

然后,点击其中一个快照标签页中的 Compare With Baseline(与基线比较)按钮。 从菜单中选择要与之比较的快照。 一个单独的 Diff(差异)标签页将打开,显示比较结果。

终端

在 Windows 上演示内置终端的 24 位颜色支持

ConPTY

GoLand’s terminal supports the new ConPTY API on Windows. We addressed several problems users were having with the old implementation, which was based on winpty, and enabled PTY on Windows by default.

借助 ConPTY,内置终端得以支持 24 位颜色。

在远程计算上通过键盘缓冲支持在 GoLand 终端中输入

键盘缓冲

此前,当您在远程计算机上工作时,如果要在 GoLand 的终端中输入字符,IDE 受延迟影响无法像在本地计算机上一样快地显示字符。

我们针对这一问题引入了键盘缓冲支持。 我们的内置终端可预测文本修改并立即以浅灰色显示。

Web 开发

使用 ES6 文件中导入路径的快速修复下载远程 ES6 模块

import 语句中 URL 的支持

您可以使用 ES6 文件中导入路径的快速修复下载远程 ES6 模块。 该模块将连同其所有依赖项一起下载。 要进行尝试,请将文本光标放在导入路径上,然后按 Alt + Enter 并选择 Download module(下载模块)。

在 html 文件中输入代码和接受补全建议

改进了 HTML 代码补全

我们改进了代码补全在 HTML 中的工作方式。 每当您在编辑器中输入标记名称或缩写或调用代码补全,GoLand 都会立即显示相关建议。

先前,只有首先输入左尖括号 (<) 才会显示。 字符实体引用的代码补全也有所改进。

使用 Update ‘package name’(更新“软件包名称”)将 npm 软件包更新到最新版本快速修复

用于更新依赖项的新检查

现在,可以直接从编辑器将 npm 软件包更新到最新版本。 打开 package.json 文件,将文本光标放在要更新的软件包版本上,按 Alt+Enter,然后选择 Update … to the latest version(将 … 更新到最新版本)。

将 JavaScript 文件中的元素置于不同的行上,然后再放回一行

将元素置于多行

GoLand 更新了用于 JavaScript 项目的意图操作,让您可以快速将逗号分隔的元素置于不同的行,并在需要时放回一行。

数据库改进

数据库中一系列单元格的 Aggregate(聚合)视图

一系列单元格的 Aggregate(聚合)视图

我们增加了显示一系列单元的 Aggregate(聚合)视图的功能。 选择要查看视图的单元范围,然后点击鼠标右键并选择 Show Aggregate View(显示聚合视图)。 状态栏会显示一个聚合值,您可以选择想要的值。

拆分编辑器标签页

独立编辑器标签页

如果拆分编辑器后打开同一个表,数据编辑器窗口现在将完全独立。 您可以设置不同的筛选和排序选项。

WHERE 和 HAVING 子句中布尔表达式的新检查

布尔表达式检查

我们为 WHEREHAVING 子句中的布尔表达式添加了一个新检查。

如果表达式似乎不是明确的布尔值,我们会将其高亮显示为黄色,并在您运行此类查询之前发出警告。

它适用于 ClickHouse、Couchbase、Db2、H2、Hive/Spark、MySQL/MariaDB、Redshift、SQLite 和 Vertica。 在所有其他数据库中,这将被高亮显示为错误。

从所选单元导航到相关数据

使用多个值的外键导航

在数据编辑器中,您可以选择多个值并导航到相关数据。

检测到 CSV 文件中的列类型并在弹出窗口中显示

CSV 文件中的自动列类型

GoLand 能够检测 CSV 文件中的列类型,现在您可以按数字值对数据进行排序。 以前,列中的数据会被视为文本,排序无法按预期进行。

为 MongoDB 筛选运算符显示代码补全建议

MongoDB:filter {}sort {} 的补全

在 MongoDB 集合中筛选数据时,现在可以使用代码补全。

为编辑器和 IDE 的其余部分显示不同的字体

数据编辑器的自定义字体

您可以为数据编辑器设置不同于 IDE 其余部分的字体。 要选择字体,请转到 Settings | Tools | Database | Data views | Use custom font(设置 | 工具 | 数据库 | 数据视图 | 使用自定义字体)。

无障碍功能更新

我们解决了一些无障碍功能问题,让屏幕阅读器更为舒适。 我们禁用了过去在鼠标悬停时出现的工具窗口微件弹出窗口和快速文档弹出窗口。

macOS 上的无障碍功能支持也得到了改进。 我们解决了 VoiceOver 焦点的几个问题,并支持从屏幕阅读器创建项目。 我们减少了播放声音的帮助工具提示的数量,以最大限度地降低编码时的干扰。