vscode —— 选择一款合适的开发工具

本文首发在自己的博客上哦:https://rxrw.me/tech/a-suitable-development-tool-vscode/

背景

曾几何时用 windows 系统的时候,写代码简直难以想象的坎坷 —— 就说命令行和环境变量与标准 linux 不同就很烦了,命令也不同步 —— 这也说明了我的 reuixiy 用 ubuntu 也不用 windows 的原因。后来换了 mac ,用起来,可以说大赞,用钱堆出来的解决方案,就是香。我 17 年买的 macbook pro ,现在运行依旧十分顺畅。

JetBrains

除此之外呢就是编辑器,诚然,JetBrains 公司出的一系列 IDE, 包括但不限于 PHPStorm, PyCharm, WebStorm, IntelliJ IDEA, GoLand 等等,极大地简化且提速了开发,内置的语言检查工具、代码智能提示引入以及调试运行等功能无不是开发路上的垫脚石啊。从而想想刚入门编程时用的 Sublime Text,哎。。

但是用了一段时间呢,还是发现其美中不足。逐渐到了难以接受的地步。

  • 由于是用 Java 语言进行开发的,因此运行在 JVM 中,相当吃内存。在一般配置下,一个 IDE 会将内存占满,导致整台电脑卡卡的,更别提敲代码了。
  • 收费。虽说我们平时使用社区版是免费的,但是其实它是不能商用的。我一直用学生邮箱去使用 Ulimate 版,但也不是长久之计。
  • 语言单一,写不同语言的代码要用不同的工具,而 IDEA 本身却是可以安装任何插件的(原本是Java IDE)。但由于其本身的属性,会导致写 PHP 的时候旁边有一个 maven 的选项卡,这样。
  • 通过问题1、3,得出一个新问题,当我同时要写 go 和 html 的时候,就必须要打开两个 IDE 了,那么这台电脑基本上就废了。。

引申:IDE 与编辑器的概念与区别

上面的内容里面把 IDE 和编辑器区分了开,其还是有一定区别的。

IDE, Integrated Development Environment ,集成开发环境。也就是说,把一系列开发相关的工具 —— 比如代码编辑、分析、调试甚至打包发布等集成到了一起。众所周知的 JetBrains 系列,微信开发中工具,eclipseAndroid StudioXCodeVisual Studio 都是我们比较熟知的 IDE 了。它们基本有一个特点就是在配置不够的机器上卡,占用内存大,但功能全面,基本不需要额外的配置。而上述的例子,除了微软的VS,苹果的XCode,都是用 Java 语言去实现的,因此。。

编辑器 —— 任何一个文本工具都可以称为一个编辑器,只要它包含如下功能:

  • 文本撰写

  • 文件保存与更新

    而大部分的编辑器都包含了文件编码(甚至记事本)、文件夹管理等功能。为编程而生的编辑器呢,更多的比如基础的语法高亮、插件扩展等。从最基础的记事本、写字板,写作专用的WordUlysses,命令行上的 vimnano ,再到写代码的 Sublime TextVisual Studio CodeAtomNotepad++ 等,都属于文本编辑器的范畴。

代码编辑器

代码编辑器有一个不约而同的特点(Notepad除外)就是可以通过插件、扩展增加新的功能,从而使一个编辑器借助外部的力量编成生产力的工具。以前在用 Sublime Text 3 的时候没有意识到这一点,直到用了 VS Code ,微软把插件功能明晃晃的放在左侧快捷栏上,才开始领略插件的威力。

VS Code

在其刚刚推出的时候,我把它跟 Sublime 一概而论,而且默认是个工程模式,给人感觉很别扭。后来来到现在这个单位,在 leader 的大力推荐下,居然已经完完全全把 VS Code 当成一个生产力的工具。集成各大语言,除了 PHP 外,支持度不亚于 JetBrains IDE —— 当然,得益于各大开发爱好者们的无私贡献!现在已经完全抛弃全家桶了。

安装

mac下:

brew install --cask visual-studio-code

你也可以选择安装预览版,看你是喜欢蓝色还是绿色了。预览版是

brew install --cask visual-studio-code-insiders

其他系统:

官网找属于自己的系统就好。

走过一遍正常的安装流程就打开了。我记得默认是会让你安装中文语言包的。

配置结构

其实想先说插件的,毕竟插件是 VS Code 的核心。但是配置结构也很重要。

首先,按 Command/Ctrl + ,,就进入了用户配置。在这里是 ui 化的配置,也可以进入 JSON 来配置。
通过 Command + Shift + P 搜索 JSON ,可以进入 JSON 配置功能。也就是通过编辑一个 JSON 文件来实现配置的变更。

在工程目录里,同样的操作会多一个选项,则是打开工作区配置。当你打开的一瞬间,会在你的工作区建立一个 .vscode 文件夹,此处的配置会覆盖用户配置。一般都是工程专属的内容,比如 python的虚拟环境等。

用户级的功能和插件的功能都是通过这个 JSON 文件去实现的。建议在安装插件之前把默认配置可以看一看。

常用插件及配置

之前劝退过我的原因之一就是网上很多没脑子的博主直接把别人的内容复制粘贴说这些都是必装插件,然后又有不更新的又有功能重复的,让人以为这编辑器就是臃肿不堪的东西。在此,哥哥我整理了一下自用的插件,尽量少装,装精品。

基础插件

设置同步

曾经是一个插件,现在就是内置的功能。在界面的左下角,人头像,可以选择 GitHub 登录或 Microsoft 帐户登录。毕竟 Github 已经是 Microsoft 的产业了。

很有用的功能,建议大家都开着。以后再换电脑,或者多台电脑一起用的时候,不用一个一个手动安装了。

go-home

这是个很逗比的插件,不过我觉得大家可能会比较有兴趣,哈哈哈。

设置 gohome.hourgohome.minute,每天当你打开 VS Code 的时候,它都会倒计时还有多久下班。默认是早 9 晚 6 ,没有任何其它功能,但很逗比。给挣扎在工位的我们一点活着的希望~

wakatime

工作量统计工具 —— 支持各大 IDE 。通过编辑器的语言、工程名可以得知你所写的每个工程的时长发送到服务端,免费版是一周一次周报大概。

安装后会弹出提示框让你输入 API Key,填写后就再也不用管啦。

Code Runner

可以运行各种语言的代码。当然前提是本地有安装对应的解释器。
做了个实验,不需要新建文件,只要打开一个窗口写代码就好了。像 Java 这种完全面向对象的语言,继承它提供的一个类就可以运行。

Kite AI Autocompletion / Tabnine AI Autocompletion

两大神器,任选其一。

基于机器学习的代码补全工具。它们会在额外跑一个线程用来计算写代码的模型,也就是各 IDE 通用的一个东西。它们的不智能之处在于不会知道代码这么写对不对,但好处也就是它知道你想要怎么写。

如果你不知道这个工具有什么好处,就先用着吧。当用到一定程度的时候,你会发现,你只需要写一个单词,剩下的代码基本不用你管了… 尤其是在写 case 条件的时候,这是一个比任何提示都强大的工具。

Leader 推荐我们在用的是 Tabnine ,我最近在尝试使用 Kite。两者的区别呢,Tabnine 基本是全语言的,但是根本不看语法,只靠推算。而 Kite 是在 Python 等语言上与语法结合提示的,大概。而且 Kite 的下载量要远大于 Tabnine 。因此两个都放了上来以供大家参考。

代码管理

最怕的一件事就是代码丢了。前几天整理代码时候发现最初写的东西大部分也都找不到了。现在我们都用 git 进行代码管理 。因此 Git 与 Github 的插件也是比较多的。VSCode自带了一个基础的管理工具,但很显然不够用。

GitLens

一款 VS Code Git 管理增强工具。安装后会直接显示在侧边栏。最近更新后,与原生的 Git 管理工具结合,更加易用了。

在代码编辑器页,点击一行时候,会在后面出现这一行是又谁最后编辑的,在 Git Tab,可以直接看提交历史和 Compare。

之前有一个插件叫 Git History,功能也很强大。但只是用来看提交历史的。现在功能已经完全被覆盖了。

Git Project Management

一般我们都会有习惯,把代码放在一个父目录下。那么与其一个一个文件夹管理,不如以 Git 工程作为目录进行管理吧!

Git Automator

懒人必备神器。写什么 Git Commit Message 都抛到脑后去吧。
在改动之后,Command + Shift + A ,会自动根据你所改动的内容生成 Commit Message,默认添加全部的改动文件。

GitHub Pull Requests and Issues

GitHub 官方扩展,登录你的 GitHub 后,会自动拉取你当前工程的 Issue 和 PR,直接本地管理。当然前提是你要把代码的 remote 设置为 github 的。可以在配置里设置默认的origin名。

各种编程语言支持

PHP

先说这个是我觉得支持最不好的了。可能因为 PHP 是全天下最好的语言吧。
原本有一个插件叫做 PHP IntelliSense,但是自从19年12月开始就停更了(开源共建呢)。有一个插件貌似叫PHP Tool的,高收费,要在后台起一个 PHP Language Server,也许功能很强大,但是很贵。

PHP Intelephense

最近更新是2021年1月27日。据描述支持的功能很多。确实。目前用起来,代码格式化-代码检查等都支持的有条不紊。但是像 Laravel这种结构比较复杂的,包括带有命名空间的情况支持就不是特别理想。可能是因为没有使用它的专业版吧。一个月12刀,如果只写PHP可以尝试。

PHP Namespace Resolver

这个东西酌情使用。帮我解决了命名空间的问题,但是有的时候会莫名其妙报一些引用错误,而且要求很严格,Imported But Not Used 的会一直亮一条红线,也挺烦的。

Python

令人比较愉悦的是,Python 是微软官方支持的。照着插件列表中的 Microsoft 点就是了。

插件:Python、Pylance、Jupyter。基于不同框架还有不同的支持插件,比如 Django。建议安装前注意一下插件的安装量和星级。

刚刚重新装了一遍 python 的插件,记得 languageServer 要选 pylance , python 的路径要设置正确,高亮再找个插件,不然还挺难受的。。

Go

来自 Go Team At Google 的开发团队开发的插件就问你用不用?

其他的什么都不用装了。当你打开一个 go 工程时,它会提示你装一些golint, gopls等代码提示检查工具。go 和 python 的智能原理差不多,都是通过运行一个 Language Server 来实现功能的。

Java

VS Code 对于 Java 和 Python 有着独特的情感。可能是因为 Java 的项目比较特殊,它必须是一个完整的工程。因此,如果你要用 VS Code 写 Java,建议直接安装 Java Extension Pack,这是一系列的插件集合。大概可以支持 maven、java 的代码提示工程管理等。具体的我也没试过其实。

Dart/Flutter

有谁用 Dart 语言写东西不是为了 Flutter 的呢?

装好 flutter 的运行环境,flutter doctor 没问题就直接装插件吧,毕竟是官方支持。

JavaScript/CSS/HTML/VUE/REACT/MARKDOWN…

诚然,node和这个标题不太符合,毕竟node属于服务端语言。
由于 vs code 是由 node 开发的,因此原生支持很多功能,此外推荐一个 Prettier 的插件吧。错误提示,Formatter等功能一应俱全哦。

结束

颜色主题什么的,大家自己配置就好啦。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容