VSCode是Visual Studio Code工具的简称,VSCode是微软开发的一块开源跨平台IDE工具。本人多年来一直从事C++以及C#的桌面开发工作,因此对于Visual Studio的IDE工具使用非常深入。因为最近涉及到Java以及JavaScript相关语言的开发工作,也逐步涉及到VSCode工具使用。因此从一个完全小白的角度学习使用VSCode工具的心得沉淀为一系列的文章分享出来,以供更多的小白用户学习。
VSCode源代码
VSCode首先是一个开源工具,在GitHub中可以下载其源代码。
https://github.com/microsoft/vscode
VSCode工具采用electron技术开发,简单的说就是用Web前端技术开发的桌面应用工具。对于小白用户来说不宜从源代码开始学习VSCode。这里仅做基本的说明,未来涉及到制作VSCode插件等需求之后再详细剖析。
VSCode下载安装
VSCode工具的主页,下载地址:
https://code.visualstudio.com/
https://code.visualstudio.com/Download
根据操作系统类型和CPU类型可以选择不同的链接下载。

我选择的是绿色安装包64bit的zip安装包。解压到任意目录,双击code.exe即可启动VSCode工具。

VSCode语言
VSCode通过插件实现各种能力扩展,包括界面语言的支持也是如此。
在VSCode的插件管理搜索lang即可找到简单中文语言包big安装,重启VSCode之后界面即可修改为中文。

绿色VSCode开发环境
VSCode工具并非单一语言或用途的IDE工具,通过安装VSCode的extension插件可以支持非常丰富的扩展能力。如果你需要同时支持Java,JS,Python,Go等多种语言的开发,同时又不希望多种开发语言的插件相互干扰;或者你的开发机器可能经常变化,如果在每台机器上都建立开发环境将非常麻烦,则可以将VSCode绿色化存储在移动硬盘中,这样将移动硬盘挂在任何的机器上即可立刻开始开发工作,免去反复建立开发环境的痛苦。
VSCode工具本身就是一种可以免安装的绿色工具,但是其插件(extension)以及用户数据缺省是存储在操作系统的系统目录下的。

在VSCode帮助文档中可以发现VSCode工具启动时支持额外的命令,通过添加额外命令可以让VSCode用特定的目录作为插件以及用户数据存储的目录。
通过--extensions-dir 参数可以配置VSCode启动的时候在哪个目录存储和获取已经安装的插件。
通过--user-data-dir 参数可以配置VSCode启动的时候用户数据在哪个目录获取以及存储。
通过以上两个启动参数即可让VSCode工具启动的时候具有完全不同的行为。
因为我需要用到Java,JS开发语言,未来还可能需要使用Python的开发语言,所以我构建这样的目录结构。

VSCode是根目录,此目录相当于存放了VSCode工具所需的所有开发环境。
|--VSCodeApp目录是存放VSCode工具程序的目录
|--Lang 目录是存放不同开发语言的插件和用户数据目录,此目录下用不同的子目录分别存放不同开发语言需要的插件。
|--Java(JS,Python) 开发语言目录,存放此开发语言的插件和用户数据目录,至少会存在extensions目录和data目录。
|--data 改开发语言的用户数据目录
|--extentsions 改开发语言的插件目录。
绿色工具启动脚本
为不同的开发语言建立好数据存储目录之后就需要为不同的语言VSCode启动建立专门启动脚本,每种语言建立一个启动脚本。在VSCode目录下新建一个文本文件,并修改扩展名为bat或者cmd,用记事本工具打开这个脚本文件,添加一下脚本到文件中。
vscodeapp\code.exe --extensions-dir %cd%\lang\java\extensions --user-data-dir %cd%\lang\java\data
以上脚本的功能就是启动vscodeapp目录中的VSCode工具,并且指定插件和用户数据目录使用lang\java目录下的对应目录。这样可以给脚本文件起名为VSCodeJava.cmd或者其他更有标示性的名称,标识这个脚本是启动Java开发环境用的。
每种开发语言除了依赖插件和用户数据,可能还需要依赖其他的工具,比如Java语言需要依赖JDK以及Maven等工具。因此在启动前可能需要添加的额外的环境,因此可以在每个语言的目录添加一个env.bat脚本用于启动VSCode工具前设置好该语言需要的开发环境。因此启动VSCode工具的脚本可以修改为这样。即在启动VSCode工具之前先调用改语言目录下的env.bat以设置好该语言开发需要的环境。
if exist lang\java\env.bat (call lang\java\env.bat)
vscodeapp\code.exe --extensions-dir %cd%\lang\java\extensions --user-data-dir %cd%\lang\java\data
对于Java开发语言目录中的env.bat脚本则可以这样编写。这样既可保证即使在没有JDK和Maven工具的计算机上也可以直接启动VSCode工具,而不用担心JDK环境是否存在。
set JAVA_HOME=%~dp0\jdk-11.0.9
set PATH=%~dp0\jdk-11.0.9\bin;%~dp0\apache-maven-3.6.3\bin;%PATH%
启动工具创建快捷方式
用bat脚本启动工具毕竟不太方便,也不太友好,可以将VSCodeJava.cmd发送到桌面快捷方式,修改名称为VSCode Java,修改快捷方式的图标为VSCode的图标或者其他自己喜欢的图标。

OK,这样就可以非常方便的直接启动Java和JS开发环境的VSCode。两个不用语言的VSCode甚至可以同时启动而不会相互干扰。
干掉启动命令的控制台
绿色化的VSCode工具启动本质上是通过bat命令行的方式给同一个VSCode工具传递不同命令参数实现的,经常用Windows的人应该知道通过bat命令会导致一个黑黑控制台窗口显示出来,这样看起来十分不爽。是否可在启动了VSCode工具之后就关闭命令行窗口,实际上是可以做到的。
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
if exist lang\java\env.bat (call lang\java\env.bat)
vscodeapp\code.exe --extensions-dir %cd%\lang\java\extensions --user-data-dir %cd%\lang\java\data
在原来的命令之前加入一段VBScript脚本命令,这段命令实际上就是以隐藏窗口的形式重新将此命令执行一次。这样就可以保证启动VSCode之后不会出现控制台窗口。当然应该也存在其他一些途径实现无控制台窗口的功能,有兴趣的同学可以自行研究。