最近有个朋友突然问起,想买一台新的个人开发用电脑,偶尔连接公司环境做做远程开发,问我有什么推荐的配置。
于是稍微梳理了一下,2020年的个人开发环境选择。
那就万能的苹果吧。
我首先想到的自然是 MBP,自己平时开发环境就是一台 iMac 和一台 Win10 机器。而从屏幕效果、开发软件源和终端体验来看,苹果家都胜出一筹。
不过随后那朋友补充了自己的预算——3000,嗯,人民币。
好吧,那基本告别苹果了。
那 Linux 怎么样?
不过除了苹果和 Windows 之外,其实还可以使用 Ubuntu 之类的 Linux 桌面环境。预想中,类似 macOS 的高清字体渲染、Unix-like 的命令环境、无缝对接服务端开发……然而理想很美好,现实还是有点骨感。
在外企开发的同学估计没问题,但在国内肯定离不开 QQ、微信、企业微信等各种国内软件。而国情所限,这些国内软件往往只支持 Win 环境、偶尔支持 macOS,基本无视更通用的 Web 端等平台的开发。
如果选择了 Linux,基本只能靠 wine 来跑它们了,而经过实际体验的感觉并不怎么愉快。
看来还是得 Windows 了。
至于 Windows 的命令行环境,有点一言难尽,不过还是有人尝试着概括成了一句话:Linux 是在命令行上做了个图形界面,Windows 是在图形界面里顺便带了个命令行。
嗯,差不多就是这个感觉,Windows 环境的命令行简直就是附带的,功能凑合,勉强能用。
虽然经常被用到,但 cmd 基本是无奈之选,软件生态贫瘠,可定制项目少,提示符展示 git 分支名称都没法做到。命令补全功能也只能做到路径补全,不支持参数补全、引号区分混乱……
PowerShell 似乎有改进,但启动更慢了,软件生态问题也没什么变化,反而干掉 &&
/||
搞了一套与 Linux/Mac 都不兼容的流程控制符,让跨平台的项目配置变得颇为蛋疼。就算后期 Win10 默认推荐使用它,也还是让人没有使用的兴趣。
而且,对于日常使用 *git** 工作和做个人笔记同步的我来说,默认也不提供可用的 ssh,就算手动安装软件支持,git bash/openssh/putty 默认使用的密钥还不太一样,就算花时间去配置整合也不一定能完全通用,费时费力也不讨好。
总之,windows 端的终端环境,不做一番改造是没法用的。
一直以来,两者都是 Windows 端命令环境的不错选择。
不过,前者基于 mintty,官方已经声明了,它并不能完全替代命令行环境。比如不能直接用 Windows 下的 Python、MySQL 等环境,甚至不支持 tree 命令:
后者基于 ConEmu,还搭配了 clink 和 git 环境等便捷配置。如果想直接使用 ConEmu 达到类似的效果,还是需要做不少手动优化的:
可见 cmder 已经提前做好了多少优化配置,让人省心。
cmder 官方提供了 精简版 和 完整版 两个包,区别在于后者内置了一份 git。由于 git 肯定会手动安装最新版,顺便自动配置 PATH 以方便 VSCode 等软件的集成和调用,所以可以考虑直接使用精简版。
对于经常在多台办公电脑、个人电脑、平板之间来回切换的我来说,打包一份做好个人配置的 cmder,就可以轻松在多端获得同样的命令行体验,简直不要太轻松。
打开 cmder 官方网站 (https://cmder.net/) 下载即可。
修改 %CMDER_ROOT%\vendor\clink.lua 中的 lambda
为 $
,以免切换历史命令时出现错乱字符。
切换到 cmder 的主目录 右键以管理员权限打开 Cmder.exe,在命令栏输入 Cmder.exe /REGISTER ALL
,回车执行即可添加右键菜单。
为了方便之后重装系统后重新设置,或者移动使用。
也可以在 cmder.exe 所在目录创建一个 register.bat,内容如下:
%~dp0cmder.exe /REGISTER ALL
pause
保存关闭,右键点击它选择“管理员身份运行”,执行完毕后,就能在右键菜单中看到 “Cmder Here” 了。
在系统环境变量中,增加一个 CMDER_ROOT
,内容为 cmder 的主目录路径。
然后,将以下内容保存为 ide_shell_entry.bat,放在 cmder 目录下:
@echo off
SET CurrentWorkingDirectory=%CD%
SET CMDER_ROOT=D:\Tools\Cmder
CALL "%CMDER_ROOT%\vendor\init.bat"
CD /D %CurrentWorkingDirectory%
最后配置 IDE 启动的终端为 cmd.exe
,启动参数 /k %CMDER_ROOT%/ide_shell_entry.bat
。
这样,就能在 VSCode、IDEA 等 IDE 中进行项目开发的时候,随时在集成终端中使用与 cmder 一致的环境。
在 2016 年,Win10 系统十周年之际,微软推出了 “Bash on Ubuntu on Windows”,后来又改名成了 “Windows Subsystem for Linux - WSL”。在 2019 年,又改造升级成了 WSL2。
有兴趣的同学可以继续阅读:《WSL1 与 WSL2 简单对比》
并且还推出了新的终端模拟器 Windows Terminal,界面美观、使用方便、CJK 字体渲染完美、启动快速,搭配 WSL 使用香到不行。
打开 Win10 的应用商店,搜索 terminal 即可找到 Windows Terminal,点击安装即可。
WSL 的话,则是直接搜索自己想要安装的 Linux 发行版本,比如 Ubuntu 20,在搜索结果中找到它,点击安装即可。
两者都安装完毕后,打开 Terminal 修改配置文件,将默认启动配置 defaultProfile
改为下面 profiles
中 WSL 对应条目的 guid
。
打开 WSL 官方页面 (http://aka.ms/wsl),点击 INSTALL WSL
后,按照指示一步步操作。
如果在本机使用了 Proxifier 可能会遇到 WSL 启动报错无法使用的情况:
参考的对象类型不支持尝试的操作。
可以执行 netsh winsock reset
修复,但这样又会导致 Proxifier 的代理控制失效,只是拆了东墙补西墙。
Proxifier 官方提供了一个工具修复这个问题,下载 www.proxifier.com/tmp/Test20200228/NoLsp.exe 后,使用管理员权限打开 cmd/PowerShell 切换到 NoLsp.exe 所在目录,执行 NoLsp.exe c:\windows\system32\wsl.exe
即可解决问题。
参考:https://github.com/microsoft/WSL/issues/4177#issuecomment-597736482
更新:2021/02 较新版本的 Terminal 已经会自动创建上下文菜单项,无需再手动添加。
先创建个放置小图标的目录:
mkdir "%USERPROFILE%\AppData\Local\terminal"
然后,在 easyicon.net 搜索 terminal 后,找个自己顺眼的图标,下载放到刚才的目录中(不知道 AppData 目录在哪的同学,直接在资源管理器地址栏里粘贴上面的路径就可以打开了),改名为 terminal.ico。
接着,创建一个 wt.reg
文件,输入以下内容:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Open Terminal Here"
"Icon"="%USERPROFILE%\\AppData\\Local\\Terminal\\terminal.ico"
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\{username}\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"
记得将上面的{username}
改成自己的用户名。
双击执行后,就可以在右键菜单中看到 Open Terminal Here 的选项了。
不过,点击选项后你会发现打开的 Terminal 是固定目录,如果要设置为当前目录,需要修改 Terminal 的配置文件。
在 profiles.defaults
段落中,在添加 "startingDirectory" : ".",
就可以了。
相比 Cmder 还需要创建脚本配置启动参数,WSL 就比较简单了,直接将 IDE 默认的继承终端启动程序,由 cmd.exe
改为 wsl.exe
就行。
Terminal 默认的效果还是挺素的,喜欢自定义的同学可以调调配色、换换背景图。
我个人则是倾向于给 Terminal 配置个亚克力背景效果。在配置文件对应的 profiles
段落内,添加 defaults
配置:
{
"profiles": {
"defaults": {
"background": "#013456",
"useAcrylic": true,
"acrylicOpacity": 0.7
},
"list": [ ... ]
},
}
日常项目开发,推荐使用 WSL。
毕竟微软自家做的环境,底层与系统的对接较完善,启动速度快。
在 IDE 中启动 cmder 的时候,往往需要六七秒的时间。如果碰上 VSCode 打开了多个项目。重启机器后,VSCode 会瞬间还原上次的多个窗口,并同时开始打开多个集成终端,速度极其缓慢,经常还有部分窗口的终端启动失败,需要手动重启,体验较差。
配置成 WSL 的话,不管几个都是秒开,简直和 Linux 环境的体验差不多。
但是遇到需要使用 Windows 系统真实环境的情况(比如 electron
打包、ffmpeg
视频转换),还是得使用 cmder 或者 cmd。不过除非是专门做 Windows 平台应用开发的同学,否则一般较少遇到这类情况。