开发工具-vscode 使用技巧

本文公众号文章地址

关于 vscode

如果我们对一个开发者问你平时 首选 IDE 是什么,不同语言的开发者估计回答都会不太一样。对于后台来说,近几年比较热门的无疑就是 Jetbrains 全家桶系列了,java 用 Idea,go 用 goland,Python 用 PyCharm,体验本身无疑是很棒的。前端开发选择 vscode 就比较多了,主要原因可能是插件支持更完善,而且 vscode 本身就是用 TypeScript 写的。当然还有一些在几年前辉煌过的 Eclipse、Visual Studio Code 等,在一些特定的开发场景还是有一席之地的

那么自己作为后台开发,为什么自己要“反其道而行之” 选择 vscode 呢,主要有两个原因:

  • 自己的开发环境并不在本地宿主机,而是在容器内(参考: 仓库 docker-centos),要用容器环境一个最直接的方式就是类似连接远程机器那样,用 ssh remote,而目前来说 vscode 对这种模式支持比较好(也和 vscode 的插件机制相关,插件相当于开发环境,可以安装到远程机器,天生就对这种开发模式适配较好)
  • 工作和个人习惯相关,需要经常在不同的开发环境之间切换,比如这会需要跑一个 golang 后台服务,过了几分钟突然一个 java 相关的需求来了。如果用 JetBrain 全家桶,就必须在不同软件(虽然操作逻辑类似)之间切换。而用 vscode 就不需要来回切换操作逻辑,很顺手

讲到这里,也要提提 vscode + ssh remote 这种模式的缺点

  • 性能不如主机模式
    如果是本机开发,其实直接用 JetBrains 就够了, 相当于直接用本地环境,比用容器开发肯定性能会好很多。像我现在开发的时候,电脑主机内存占用60-70算是家常便饭
  • 熟练门槛高
    对于我现在的开发模式来说除了本身的开发语言之外,还需要了解一些Docker相关的基本操作,还有 vscode 的快捷键(这个非常重要,说他是 vscode 的灵魂也不为过,快捷键用的少开发效率直接减半)、各个开发语言的插件和配置等
  • 特定编程语言下功能不如 Jetbrains 系列
    比如 Idea 可以直接下载和查看源码,vscode 只能查看编译后的 class 文件(虽然也是代码格式,但是少了注释,读开源项目的时候还是比较费劲)

因此这篇文章依然算是安利的,比较实用的干货的地方,就是结合自己的经验推荐一下好用的 vscode 插件了。至于其他的技巧,就得看个人的使用习惯,我的方法也不一定适用于其他人

如果你觉得上面使用 vscode 的好处,比较契合自己的习惯,而且不太在乎其带来的影响,那么就可以动手尝试一下了。当然有使用上的感想也欢迎和我私信交流

常用快捷键

注意: 一些键位我是改过的,因此还是要看个人习惯

快捷键功能
Command + Control + <-跳转到上一个位置
Command + Control + ->跳转到上一个位置
Control + `打开终端
Command + Shift + P插件功能列表
Command + Shift + F全局搜索
Command + Shift + O当前文件/类的所有方法
Command + P打开当前项目的指定文件
Command + R打开最近项目
Control + G跳到指定行
F5开始 debug
Shift + F5结束 debug

ssh remote

插件安装

在这里插入图片描述

开发环境准备

开发环境可以是一个远程宿主机,也可以是你本地的 container 环境
这里还是以 容器环境为例

# 启动容器
docker run -d --hostname dev --name dev -p 2000:22 centos_dev_full

连接开发机

在这里插入图片描述

输入账号密码之后,就可以顺利进行 vscode + ssh remote 模式开发了。不过体验上我们还可以继续优化一下

ssh key

如果不配置免密登录,每次打开一个新项目(新的代码地址),都需要输入一次,下次打开也还要,非常麻烦
所以这里我们把主机的公钥配置到开发机的 ~/.ssh/authorized_keys 中,后续不再输入密码

# linux 生成公钥
ssh-keygen

# 查看公钥
cat ~/.ssh/id_rsa.pub

# 将公钥写入服务端受信公钥列表上
echo "公钥" >> ~/.ssh/authorized_keys

git key

还有一个需要频繁输入密码的场景,就是使用git,为了方便我们按照配置ssh 免密类似的方式配一下,把主机生成的 ssh 公钥配置到 git 上

github: **settings -> ssh and GPG keys **

在这里插入图片描述
gitee: 设置 -> ssh 公钥

在这里插入图片描述

各开发环境常用插件

java

Extension Pack for Java

在这里插入图片描述

注意新版本的插件要求运行环境是 JDK11, 所以如果你的主力项目用的是 JDK8 ,还需要给开发机额外装 JDK11,另外环境变量也要配对

# /etc/profile
export JAVA_HOME=/usr/java/jdk8路径
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JDK_HOME=/usr/java/jdk-11.0.14.1+1
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$GRADLE_HOME/bin

这些配置之前还提过 issue 专门问过开发者,最后解决的,亲自试验没问题

另外项目也要显式说明使用的 JDK 版本,maven 和 gradle 配置如下

# pom.xml
## 注意: 不同的 module 对应的 pom.xml, 都需要加上这个配置
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
# build.gradle
  plugins.withType(JavaPlugin) {
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
  }

最后打开 Java: Configure Java Runtime, 确认项目所使用的 JDK 版本是准确的

在这里插入图片描述

maven

maven 插件在上面装的插件包中自带了,但是有个很奇怪的问题: 插件无法按照 maven 安装路径 /conf/settings.xml 来读取配置,因此诸如本地依赖路径、配置文件路径都会按默认方式从 ~/.m2 路径读取。建议在初始化开发环境的时候配置一个软链指向实际路径,防止通过 maven 下载的依赖包存放在不同路径,造成空间浪费

# 创建配置和依赖路径软链
mkdir -p ~/.m2 && ln -s /本地maven 仓库地址 ~/.m2/repository && ln -s /maven安装路径/conf/settings.xml ~/.m2/settings.xml

或者手动修改插件 maven.settingsFile 配置,不过有点麻烦,不建议这么做

gradle

gradle 插件需要另外下载: Gradle Extension Pack

在这里插入图片描述

formatter

设置 formatter 工具: 打开插件功能列表(command + shift + P), 选择 Open Java Format Settings With Preview
第一次会提示还未设置,可以直接用默认的,也可以直接修改 .vscode/settings.json 设置用谷歌的formatter

# .vscode/settings.json
"java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml",
"java.format.settings.profile": "GoogleStyle"
lombok

和 Idea 类似,lombok 要想在编写过程中让注解直接生效,也需要额外的机制: 插件: Lombok Annotations Support for VS Code

在这里插入图片描述

golang

go

Golang 官方的插件装完之后,在代码编辑这块功能都已经很完备了,装好之后包括测试执行、formatter 等功能都有

在这里插入图片描述
在这里插入图片描述

不过关于测试的参数这里,默认的配置往往不符合我们要求。需要额外设置超时时间,打印日志,取消测试缓存等

在这里插入图片描述

# .vscode/settings.json
"go.testFlags": [
    "-v",
    "-count=1",
    "-timeout=300s"
],
打开 go 源码

Working on the Go standard library and the Go tools

直接打开 go 仓库根路径,代码会一片飘红

在这里插入图片描述

因为这并不是正确的打开 go 源码的方式,需要打开 src 目录,并在 src/.vscode/settings.json 中添加如下配置:

{
    "go.alternateTools": {
      "go": "/opt/modules/golang/bin/go" // 本地 go 可执行文件路径
    },
    "go.toolsGopath": "~/.vscode/godev", // vscode 打开 golang 项目安装的插件路径,可以和 GOPATH 共用也可以指定单独的路径
    "html.format.enable": false // 不要自动格式化 html 文件,因为 go 源码中的 html 是带有模板的特殊格式
  }

重新打开 src 目录,能正常查看源码了

在这里插入图片描述

python

python

在这里插入图片描述

如果你的开发机上安装了多套 python,可通过 Python: Select Interpreter 进行切换

在这里插入图片描述

formatter

推荐 flake8,默认的 pylint 要求有点过于严格

打开插件功能列表,搜索 Python: Select Linter 并选择 flake8,第一次选择后提示安装即可

自动 format: black

在插件配置中搜索: python formatting provider

在这里插入图片描述

markdown

插件名: Markdown All in One
在写 readme 的时候还是非常好用的,可以直接看到效果: 打开 Markdown: open preview, 并把 preview 并把窗口拖到右边即可

在这里插入图片描述

在这里插入图片描述

总结

使用 vscode 很长一段时间回头看,插件功能确实很强大,自己现在用到的也只是万众插件中的冰山一角,希望后面有什么新的感受可以再补充一下

引用资料

如何评价 VS Code Remote Development?

讨论-买Jetbrains全家桶的都是什么人?

讨论-IDEA 和 vscode 比较介绍,推荐那个?

vscode官方-Java formatting and linting

v2ex-大家在自己的 Python 项目中倾向使用哪个 Linter?

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值