前言
Shaun 最近想换换新口味,想尝试用 Cmder 作为 VSCode 下的默认终端,不想再继续使用 git-bash 了,因为 git-bash 有时会出现一些乱码问题。但是在用 VSCode 集成 Cmder 时出现了几个问题。
问题篇
如果在 VSCode 用户设置文件中直接添加 Cmder.exe 及其路径,那么在使用 VSCode 终端时会重新打开一个 Cmder 窗口,而不是直接显示在 VSCode 的「终端」里。Shaun 想要的是 Cmder 就是 VSCode 的终端,就在 VSCode 里,就和原有cmd 终端一样,在 VSCode 下的终端可以直接输入相关命令,而不是另外弹出一个命令行窗口。
解决方案篇
方法一
将 Cmder 放进一个文件夹中,文件夹名不带空格,比如 Shaun 所有的绿色软件全部放在 D:\ProgramFiles
下,在 VSCode 用户设置文件中添加:
1 | "terminal.integrated.shell.windows": "C:\\Windows\\Sysnative\\cmd.exe", |
方法二
一部分用户可能有点强迫症 ๑乛◡乛๑,硬是要把绿色软件还放入系统盘中的 Program Files
文件夹里,这样在 VSCode 里配置 Cmder 作为默认终端时就会出现问题。主要是因为 Program Files
文件夹名中有空格(这里吐槽一下带空格的文件名真鸡儿坑爹,命令行中根本无法访问,这应该是巨硬的历史遗留问题了, 特立独行的支持带空格的路径名,想显摆一下自己,但以目前的情况看,这种支持简直无力吐槽,造成了一堆问题,和 Windows 路径名中的 \
有的一拼,都是逼死现代程序员的设计 _(´ཀ`」 ∠)_)。好了,吐槽的话也就说到这里了,如果配置路径里无法避免 Program Files 文件夹,这里有三种解决方案:
Windows 在支持带空格的长文件名的同时,也会分配一个短名称,可以称为该文件夹的别名,通过这个别名就可以在命令行中访问该文件夹,获取这个别名的方法有:在命令行中输入
dir /X
,即可在文件夹名之前的一列的看到该别名,若没有别名则为空白,若要添加别名则需要加入/N
参数。Shaun 这里显示别名如下:1
2
3
4
5
6
7
8
9
10
11
12
13$ dir /X
驱动器 C 中的卷是 System
卷的序列号是 XXXX-XXXX
C:\ 的目录
.........
2018/05/16 19:21 <DIR> PROGRA~1 Program Files
2018/05/17 15:14 <DIR> PROGRA~2 Program Files (x86)
..........由上面可知
Program Files
文件夹的别名为PROGRA~1
,而Program Files (x86)
文件夹的别名为PROGRA~2
,在配置路径时只需要用别名替换相应的文件夹名即可,如下:1
2
3
4
5
6{
"terminal.integrated.shell.windows": "C:\\Windows\\Sysnative\\cmd.exe",
"terminal.integrated.shellArgs.windows": [
"/k C:\\PROGRA~1\\Cmder\\vendor\\init.bat"
]
}通过转义符添加
" "
使Program Files
作为一个整体,如下:1
2"terminal.integrated.shell.windows": "cmd.exe",
"terminal.integrated.shellArgs.windows": ["/k", "C:\\\"Program Files\"\\Cmder\\vendor\\init.bat"],直接在系统环境变量中新建一个变量,将 Cmder 的根目录加进去,如下:
变量名 变量值 CMDER_ROOT C:\Program Files 再在 VSCode 用户设置文件中添加:
1
2
3
4"terminal.integrated.shell.windows": "C:\\Windows\\system32\\cmd.exe",
"terminal.integrated.shellArgs.windows": [
"/k %CMDER_ROOT%\\vendor\\init.bat"
]
通过以上几种方法(推荐直接使用方法一),就能成功在 VSCode 中集成 Cmder,可以直接在 VSCode 的终端里享受 Cmder 了。
后记
没有什么好说的了,该吐槽也已经吐槽完了。方法二 Shaun 没试过,只是感觉应该可行,有问题的小伙伴可以在下方留言(这是不可能的,这辈子都不会有人留言的,反正也没人会看到的 ╮(╯▽╰)╭)。以上解决方案全部来自网络,Shaun 只是做个总结记录,万一以后碰到类似问题至少有多种方案可以尝试。
参考资料
[1] How to use Cmder in Visual Studio Code?
[2] Setting Cmder.exe as integrated shell still opens in separate window
[3] IntelliJ idea webstrom Visual Studio Code vscode 设置cmder为默认终端 Terminal