Tools/VSCode · #productivity#vscode#tools

VSCode 后端开发必备插件:我每天都在用的几个

2020.05.23 3 min 1.3k
// 目录 · contents

我用 VSCode 做后端开发已经两年了,主要写 Java 和一些 Python 脚本。这篇文章只写我每天实际在用的几个插件,跳过那些装上去一次都没打开的。

REST Client

发 HTTP 请求最顺手的方式,没有之一。相比 Postman,最大的优势是请求以 .http 文件形式保存,可以提交到 Git,团队共享。

装好之后新建 .http 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@host = http://localhost:8080
@token = Bearer eyJhbGci...

### 获取用户信息
GET {{host}}/api/users/123
Authorization: {{token}}

### 创建订单
POST {{host}}/api/orders
Authorization: {{token}}
Content-Type: application/json

{
"userId": 123,
"items": [
{"productId": 1, "quantity": 2}
]
}

### 查询订单状态(引用上一个请求的响应)
GET {{host}}/api/orders/{{createOrder.response.body.orderId}}
Authorization: {{token}}

点击请求上方出现的 Send Request 就能发出去,响应在右侧面板显示。我们团队会把各个接口的测试 .http 文件放在项目里,新人接手时可以直接用,比口口相传接口文档靠谱多了。

REST Client 的详细用法我之前单独写了一篇:VS Code REST Client:最好用的 API 测试工具之一

GitLens

Git 内置功能只能显示谁在哪一行改了什么,GitLens 能告诉你更多:

  • 光标停在某行,行尾自动显示 <作者> <时间> <commit 信息>(inline blame)
  • 文件修改历史,可以和任意历史版本对比
  • 分支可视化图,比命令行 git log --graph 好看
  • 某行代码的完整修改记录,包括这次改动属于哪个 PR

inline blame 是最高频的功能。发现某段奇怪的代码时,直接看是谁在什么时候提交的,commit message 里通常会有解释。如果 commit message 只写了 fix bug,就去找提交者问清楚。

注意:GitLens 免费版已经够用,Pro 版的功能基本用不到。它对大型仓库有点卡,如果觉得影响响应速度,可以把 inline blame 关掉,只保留按需查看的功能。

Error Lens

默认的 VSCode 错误提示是红色波浪线,需要把鼠标移过去才能看到错误信息。Error Lens 把错误信息直接显示在代码行尾,不用额外操作:

1
2
3
// 代码行尾会显示类似:
// Cannot resolve symbol 'UserService' [Java]
private UserService userService ← 错误直接内联

写代码时一眼就能看到哪里有问题,不用在波浪线和悬浮提示之间来回。对于动态语言(Python、JS)的类型错误提示尤其有用。

Remote - SSH

这个是开发效率提升最大的插件之一,但知道的人不多。

原理很简单:VSCode 通过 SSH 连到远程服务器,在本地的编辑器里编辑远程文件,本地的所有插件(代码补全、Linting、调试器)都能正常工作,感觉就像在本地开发,但实际运行环境是服务器。

适用场景: - 开发环境在公司内网服务器或云主机 - 代码需要在 Linux 环境跑,但本地是 macOS/Windows - 远程调试生产问题(配合 JVM 的远程调试端口)

配置方式:

1
2
3
4
5
6
# ~/.ssh/config
Host dev-server
HostName 192.168.1.100
User zhangsan
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes

在 VSCode 里 Cmd+Shift+PRemote-SSH: Connect to Host → 选 dev-server,然后就像操作本地一样。

在这之前我的工作流是:本地写代码 → scp 传到服务器 → 服务器上跑,非常笨拙。换成 Remote-SSH 之后直接在服务器上改,省掉了同步这一步。

Indent Rainbow

把不同层级的缩进用不同颜色标记。对 Python 和 YAML 这种缩进敏感的语言特别有用:

1
2
3
4
5
6
7
8
9
# 颜色标记让层级关系一目了然
spring:
datasource: # 第一层(蓝)
url: jdbc:mysql # 第二层(绿)
username: root # 第二层(绿)
jpa: # 第一层(蓝)
properties: # 第二层(绿)
hibernate: # 第三层(橙)
ddl-auto: none # 第四层(紫)

写 Kubernetes YAML 或 Spring 配置时,缩进错了会报错但很难定位,有了颜色标记一眼就能看出来。

Database Client JDBC

连数据库查数据。我用过 DataGrip,确实强大,但公司要求的许可证太贵,而且功能很多我用不到。Database Client JDBC 免费版已经能满足日常需求:

  • 连接 MySQL、PostgreSQL、Redis、MongoDB
  • 执行 SQL,有自动补全
  • 数据表可视化,支持编辑
  • 导出查询结果(CSV、JSON)

不足之处是复杂查询的 SQL 格式化不如 DataGrip,也没有 ER 图,做数据库建模还是得用专门工具。


以上这几个是我个人每天都在用的。插件装太多会拖慢 VSCode,每次安装新插件我都会问自己”这个我真的每周会用几次吗”,用不到的就卸载。收藏夹里积灰的插件没有任何意义。

作者 · authorzt
发布 · date2020-05-23
篇幅 · length1.3k 字 · 3 min
许可 · licenseCC BY-SA 4.0
$ echo "comments" · 评论