本文公众号文章地址

关于 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

插件装置

开发工具-vscode 使用技巧

开发环境预备

开发环境能够是一个长途宿主机,也能够是你本地的 container 环境 这里仍是以 容器环境为例

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

衔接开发机

开发工具-vscode 使用技巧

输入账号暗码之后,就能够顺利进行 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 **

开发工具-vscode 使用技巧
gitee: 设置 -> ssh 公钥

开发工具-vscode 使用技巧

各开发环境常用插件

java

Extension Pack for Java

开发工具-vscode 使用技巧

留意新版别的插件要求运转环境是 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 版别是准确的

开发工具-vscode 使用技巧

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

开发工具-vscode 使用技巧

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

开发工具-vscode 使用技巧

golang

go

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

开发工具-vscode 使用技巧
开发工具-vscode 使用技巧

不过关于测验的参数这里,默许的装备往往不符合咱们要求。需求额定设置超时时刻,打印日志,撤销测验缓存等

开发工具-vscode 使用技巧

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

python

python

开发工具-vscode 使用技巧

假如你的开发机上装置了多套 python,可经过 Python: Select Interpreter 进行切换

开发工具-vscode 使用技巧

formatter

引荐 flake8,默许的 pylint 要求有点过于严厉

翻开插件功用列表,查找 Python: Select Linter 并挑选 flake8,第一次挑选后提示装置即可

自动 format: black

在插件装备中查找: python formatting provider

开发工具-vscode 使用技巧

markdown

插件名: Markdown All in One 在写 readme 的时分仍是十分好用的,能够直接看到作用: 翻开 Markdown: open preview, 并把 preview 并把窗口拖到右边即可

开发工具-vscode 使用技巧

开发工具-vscode 使用技巧

总结

运用 vscode 很长一段时刻回头看,插件功用确实很强大,自己现在用到的也只是万众插件中的冰山一角,希望后边有什么新的感触能够再弥补一下

引用材料

怎么点评 VS Code Remote Development?

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

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

vscode官方-Java formatting and linting

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