把 Windows 版 VSCode 默认的 Terminal 修改为 PowerShell

为什么要用 Windows

虽然我日常和工作用系统都是 Linux(当前是 linuxmint),但是偶尔还是会有切到 Windows 的时候。基本上是为了玩游戏,其次还有些 Linux 不适合的地方,不过极少,例如使用 Pr 制作视频。

为什么用 VSCode

为什么用 VSCode 几乎不需要解释,因为它确实非常不错。即使我在 Linux 上也是将它作为默认的文本编辑器和轻量级项目的开发工具。
Windows 作为我的娱乐用途操作系统,原本不应该装任何开发环境或者工具的,但是渐渐的发现 Windows 上娱乐之外浪费的时间有很多…
例如游戏下载或者更新的时候,很长时间我都不知道干什么好,往往都是刷网页等待更新结束。直到今天为了装某游戏下载了大半天,这之间的时间又不能切到 Linux 上,我才发现这样浪费的时间其实挺多的。

于是我决定:在 Windows 上装 VSCode,浪费的时间可以用来Coding…
为什么选择 VSCode?这还用问嘛… 难不成让我在一个娱乐用操作系统上装一个 VS 或者 IDEA …

CMD

cmd.exe 是垃圾… cmd.exe 是垃圾… cmd.exe 是垃圾… … …
因为 cmd 是垃圾,真的太烂了,简直可以用恶劣至极来形容。所以我无法忍受一个用惯了 Linux Terminal 的人去用这么垃圾的玩意,哪怕上去敲一个命令都嫌弃…

PowerShell

PowerShell 是 Windows 上新的 shell 程序(如果 cmd 也算的话),它强大之处在于可以访问 .NET CLR 和调用 COM 功能,和 cmd.exe 这样的老古董程序是天壤之别。
当然,一般用途的话这些不重要。另一方面是作为一个 shell 环境,命令行程序,它学习了很多 Linux 下的终端程序优点,一些快捷操作常用 CLI 工具用法等都比较接近,所以它非常的便捷。某些方面,例如 Tab 大小写纠正等比 Linux 下的很多终端程序更人性化。

然而,VSCode 上默认的 Terminal(快捷键 Ctrl + `)是 cmd,所以本文的目的就是换掉 VSCode 上 cmd 这个恶心的家伙。

修改 Terminal

选择:文件 - 首选项 - 用户设置,粘贴下面的配置键值到 json 中保存:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\WindowsPowerShell\\v1.0\\powershell.exe"
          

OK,cmd 被替换成 PowerShell 了,效果简直赞。
但是为什么是一个访问不到的路径?sysnative 表示什么?如果用

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
          

再调用出 VSCode 的 Terminal 可能会出现“无法加载 PSReadline 模块。控制台在未使用 PSReadline 的情况下运行。” 或者 “cannot load PSReadline module…” 之类的警告信息。这种警告信息没有害处,但是看着非常难受。
原因是 PSReadline 这个模块没有被安装在 32 位 PowerShell 环境中,而自己默认去找 powershell.exe 可能会找到 32 位的 system32 路径中的文件。搞错了路径,所以出现这个恼人的警告,至少我开始就搞错了。

而 sysnative 是一个虚拟目录,它可以让 32 位程序找到正确的 64 位 system32 目录,故不会存在上述问题。

最后

还是小小的推荐下 VSCode 这个工具,虽然我是有一定年限的 Linux 用户但是我并非 Vim/Emacs 党,反而我觉得编辑器之争无意义。改天有时间会发文专门记录一下我的 VSCode 的主要扩展和配置以及常见问题解决。