本文公众号文章地址
关于 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"
],
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?