随着Windows 11的发布,相信部分用户也因果味十足的UI和WSLG的成熟从Linux桌面转投了Windows 11。而Windows下缺乏完整命令行体验的问题长久以来令人诟病。

众所周知,加装了Oh-My-Zsh插件的Zsh对开发者而言如同神器。为此,我们想要把完整的zsh体验带到Windows上。而WSL(无论1/2)与Windows的用户目录不共通,导致大量用户相关内容需要重复配置(比如ssh密钥)。所以,我认为WSL所带来的体验是不完整的。

但我们还有msys2。

但是msys2和Git for Windows存在命名冲突,即相同的软件会同时存在。虽然这样可以使用,但是并不优美。况且某些IDE(例如idea)只认Git for Windows的Git,而Git for Windows本身就是msys2的一个最小子集,我们不如考虑把两者集成起来。

因此,便有了今天这篇教程。

首先,安装Windows下的包管理器——Chocolatey:

依照官网安装命令安装即可。

之后,利用choco安装Git for Windows:

执行命令 choco install git

这样,Git Bash就安装完成了。

等等,我们需要Git Zsh,你装个Git Bash有什么用?

Git Bash只是个引子,我们要做的,是「ntr」bash,将其替换为zsh。

由于msys2采用pacman包管理器,而pacman的打包方式较为简单,直接解压即可安装,因此,我们可以通过解压缩文件来为没有包管理器的Git for Windows安装软件包!

从msys2项目官网下载zsh软件包,利用你的压缩软件(这里我选用bandizip 7)解压缩到Git for Windows安装根目录。

点击File之后的链接即可下载

解压etc和usr文件夹到Git for Windows安装根目录(C:\Program Files\Git)。

打开Git-Bash输入zsh并回车,你发现你得到了一个可用的zsh。

接下来,我们要考虑怎样让这个zsh更好地与Windows系统集成。

msys2.ico下载图标到Git for Windows安装根目录(C:\Program Files\Git)。

打开Windows Terminal设置,利用代码编辑器编辑json,粘贴以下部分:

 {
   "closeOnExit": "graceful",
   "commandline": "C:\\Program Files\\Git\\usr\\bin\\zsh-5.8.exe --login",
   "guid": "{8fc27f7a-7532-4e48-97cf-7d5df4cc40f0}",
   "historySize": 9001,
   "icon": "C:\\Program Files\\Git\\msys2.ico",
   "name": "MSYS2",
   "startingDirectory": "%USERPROFILE%"
 }

接着,修改Windows Terminal默认配置以默认启用Git-Zsh:

现在你的Windows Terminal已经可以打开Git-Zsh终端了。

接下来,安装Oh-My-Zsh:

这样你的Git-Zsh就算是打造完成了。但还是有点不太完美的地方,比如运行某些软件的时候会弹出关于LANG的提示:

我们需要编辑/etc/profile,加入以下代码:

export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

每次启动时总会弹出烦人的

ERROR: this script is obsolete, please see git-completion.zsh

提示,这个又要怎么解决呢?

定位这句话在哪里,发现删除文件 /etc/profile.d/git-prompt.sh 即可。

这样,我们的Git-Zsh就算是完美了。

最后,我们来为它创建一个快捷方式:

目标:"C:\Program Files\Git\usr\bin\zsh-5.8.exe" --login

起始位置:"C:\Program Files\Git\usr\bin"

图标:%ProgramFiles%\Git\msys2.ico

创建于桌面即可。

这样,我们就能非常方便地打开Git-Zsh啦!

(本文完)


Faster than LIGHT