MSYS 2 折腾手记
由于工作中在 Windows 下使用 Git,我接触到了 MinGW,但 MinGW 有一些不便之处,在尝试解决这些问题时,我找到了另一个更方便的环境 MSYS2,关于两者之间的对比,可以看一下 这篇文章。
安装过程在 官网 有详细说明,这里记录的是我自己的 MSYS2 配置。
窗口最大化及进入指定目录
MSYS2 默认的终端为 Mintty,启动的命令位于安装目录下的 start_shell.cmd
中(如果找不到这个文件,需要参考官网安装说明更新一下):
:startmintty
start "%CONTITLE%" "%WD%mintty" -i /msys2.ico /usr/bin/bash --login %1 %2 %3 %4 %5 %6 %7 %8 %9
增加两个参数:
- -w max:窗口最大化
- env CHERE_INVOKING=1:启动后进入当前目录,而不是默认的用户根目录
修改后的命令如下:
:startmintty
start "%CONTITLE%" "%WD%mintty" -i /msys2.ico -w max env CHERE_INVOKING=1 /usr/bin/bash --login %1 %2 %3 %4 %5 %6 %7 %8 %9
然后修改 MYSYS2 快捷方式的属性,在起始位置一栏,填上要进入的目录,这样通过快捷方式启动 MSYS2 后,即可进入指定的目录,有关 Mintty 的参数说明可以看一下 这里。
环境变量
在开发过程中发现,我本机安装的 PHP 和 Node 在 Windows 自带 cmd 下是可以执行的,但在 MSYS2中执行却提示 winpty:command not found
,但通过完整的路径又可以执行,说明是 MSYS2 读取系统环境变量出了问题,解决方法是找到 start_shell.cmd 中的这一行:
rem set MSYS2_PATH_TYPE=inherit
去掉前面的 rem
注释,使这一行命令生效,表示设置 MSYS2 的环境变量继承自系统。
安装和配置 Git
Linux 下的大部分程序都可以在 MSYS2 自带的包管理工具中找到,这里执行一下即可安装:
pacman -S git
由于 MSYS2 的 Git 是依赖 Vim 的,这里也一起装上了,但是相比 Git 的官方版本有三处问题:
- 进入某个 Git 项目的目录时,不会显示当前所在的分支
- Git 子命令不支持 Tab 补全
- Vim 缺少默认配置文件
需要先安装 Git 的官方版本(配置完成后可卸载),然后拷贝安装目录下的如下文件:
etc/profile.d/bash_completion.sh
etc/profile.d/git-prompt.sh
etc/vimrc
到 MSYS 安装目录的 etc\profile.d
下,然后修改 etc/bash.bashrc
,找到这一行并在行首添加 # 将其注释:
PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[35m\]$MSYSTEM\[\e[0m\] \[\e[33m\]\w\[\e[0m\]\n\$ '
最后重启 MSYS2 即可看到效果。
设置 PhpStorm/WebStorm/Intellij 的 Terminal
以 PhpStorm 为例,默认的 Terminal 是 Windows 自带的 cmd,比较简陋,可以换成 Power Shell 或者 MSYS2 的 bash,后者的设置方法如下:打开 PhpStorm 的 Settings->Tools->Terminal,右侧的 shell path 填入如下内容(MSYS2 path 表示 MSYS2 的安装路径):
- PhpStorm 版本为 2016.1.0 之前,包括 1.0
MSYS2 path\usr\bin\mintty.exe -w max MSYS2 path\usr\bin\env.exe CHERE_INVOKING=1 /usr/bin/bash --login -i
- PhpStorm 版本为 2016.1.0 之后(注意引号)
"MSYS2 path\usr\bin\mintty.exe" -w max "MSYS2 path\usr\bin\env.exe" CHERE_INVOKING=1 /usr/bin/bash --login -i