使用msys2打造优雅的开发环境

安装msys2

windows下常用的类似unix终端软件有git fow windows(使用的mingw)、mingw、msys2、cgwin。

  • git fow windows: 不想折腾的同学,直接使用该软件就够用了。缺点是自带的预编译的软件包比较少。
  • mingw: 打包了gcc等编译器,默认没有git。与git fow windows一起使用,有可能与后者内置的mingw版本冲突。
  • cygwin: 最全的类Unix环境支持。缺点:比较庞大。
  • msys2:自带大量预编译的软件包,提供pacman便捷安装git、zsh、gcc等软件。推荐使用该软件。

msys2产生的背景:由于 MinGW 万年不更新,MSYS 更是,Cygwin的许多新功能 MSYS 没有同步过来,于是 Alex 等人建立了新一代的 MSYS 项目。仍然是 fork 了 Cygwin(较新版),但有个更优秀的包管理器 pacman,有活跃的开发者跟用户组,有大量预编译的软件包(虽然肯定没有Cygwin多)。

windows 10新增的wsl2也可以作为开发环境备选。但是由于IO性能差,git操作非常慢,所以用的不多,而 msys2带有的 Bash 感觉是个不错的选择。

本文基于 msys2-bash + zsh + oh-my-zsh 搭建类UNIX开发环境,下面是详细内容。

安装

官网:https://www.msys2.org/

github: https://github.com/msys2/msys2-installer

镜像地址:https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/

本文安装的版本是:https://github.com/msys2/msys2-installer/releases/download/2021-07-25/msys2-x86_64-20210725.exe

安装

1、下载下来安装到C盘,完整路径:C:\msys64。没有特殊要求,请不要修改路径,后续都是参照这个路径增加功能。

2、配置环境变量。PATH里增加:C:\msys64\usr\bin

配置pacman镜像

pacman是arclinux中的软件管理工具,也是widows上msys2默认的软件管理工具。pacman可以直接从网络上的软件仓库下载安装及删除软件,自动处理依赖关系,类似ubuntu中的apt-get。

镜像地址:https://mirrors.tuna.tsinghua.edu.cn/help/msys2/

进入C:\msys64\etc\pacman.d目录,分别进行如下操作:

编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686

编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64

编辑 /etc/pacman.d/mirrorlist.ucrt64 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/ucrt64

编辑 /etc/pacman.d/mirrorlist.clang64 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/clang64

编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

点击安装路径的mingw64.exe启动,然后执行 pacman -Sy 刷新软件包数据即可。

配置好pacman 镜像源,就可以安装常用软件了。

安装常用软件

git

pacman -S git

命令行里输入git version 可以查看版本:

PS C:\Users\lenovo\Desktop> git version
git version 2.32.0

提示命令找不到可以重启试一下。

Oh My Zsh

官方网站: http://ohmyz.sh

GitHub: https://github.com/ohmyzsh/ohmyzsh

pacman -S zsh

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 或者 
# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

所以这时的zsh 基本已经配置完成,你需要一行命令就可以切换到 zsh 模式,终端下输入zsh切换,输入bash切回去。

ohmyzsh插件,路径:

~/.oh-my-zsh/plugins/
~/.oh-my-zsh/custom/plugins/

新增插件示例:

git clone git://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

启用插件:修改~/.zshrc文件,示例:

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

默认是plugins=(git)

执行下 source ~/.zshrc激活插件。

配置idea

配置换行符

在window下开发有一个大坑,就是换行默认是CRLF,也就是回车换行,但是Linux下只有换行LF,这样代码提交后,会出现编译问题,所以最好的办法是在IDEA下设置默认为LF。

首先我们先介绍CRLF,LF和CR这三种东西,CR是MAC老版本的做法,就是回车,但是后来的MAC系统统一换成LF了,LF是Linux下的做法,就是换行,这个做法比较自然。微软采用的是CRLF,看上去好像是兼容了CR和LF,但是实际完全不是那么回事,就是回车并换行,微软一直保持这种做法,开发人员大多在Linux下,所以对于开发人员来说还是比较坑的。

点击:File -> Settings… -> Editor -> Code Style : 修改Line separator,默认是System-Dependent,我们设置成【Unix and OS X(\n)】,保存就好了。

使用msys2打造优雅的开发环境

配置终端

点击 File | Settings | Tools | Terminal ,配置shell path:

C:\msys64\usr\bin\bash.exe

或者

C:\msys64\usr\bin\zsh.exe

这样就可以执行bash命令了。例如:

$ cd /d/Download/

$ ls | wc -l
81

$ which mvn
/e/opt/apache-maven-3.6.3/bin/mvn

$ cd ~

配置右键打开终端

效果:

使用msys2打造优雅的开发环境

新建mingw64.reg后缀文件:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw64]
@="MinGW64 Here"
"icon"="C:\\msys64\\mingw64.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw64\command]
@="C:\\msys64\\msys2_shell.cmd -mingw64 -here"

双击导入即可。

配置 Windows Terminal 使用 msys2 bash

核心参数:

名称:msys2

命令行:C:\msys64\usr\bin\bash.exe

icon: C:\msys64\msys2.ico

{
    "guid":"{1c4de342-38b7-51cf-b940-2309a097f589}",
    "hidden":false,
    "name":"Bash",
    "commandline":"C:\\msys64\\usr\\bin\\bash.exe",
    "historySize":9001,
    "closeOnExit":true,
    "useAcrylic":true,
    "acrylicOpacity":0.85,
    "icon":"C:\\msys64\\msys2.ico",
    "startingDirectory":null
}

使用msys2打造优雅的开发环境

配置 zsh 为 bash 默认终端

编辑 ~/.bashrc,加入下面的几行。

# Launch Zsh
if [ -t 1 ]; then
exec zsh
fi

附录: pacman常用命令

pacman命令较多,作为新手,将个人最常用的命令总结如下:

  • pacman -Sy: 从服务器下载新的软件包数据库(实际上就是下载远程仓库最新软件列表到本地)。

  • pacman -Syu: 升级系统及所有已经安装的软件。

  • pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。

  • pacman -Rs 软件名: 删除软件,同时删除本机上只有该软件依赖的软件。

  • pacman -Ru 软件名: 删除软件,同时删除不再被任何软件所需要的依赖。

  • pacman -Ssq 关键字: 在仓库中搜索含关键字的软件包,并用简洁方式显示。

  • pacman -Qs 关键字: 搜索已安装的软件包。

  • pacman -Qi 软件名: 查看某个软件包信息,显示软件简介,构架,依赖,大小等详细信息。

  • pacman -Sg: 列出软件仓库上所有的软件包组。

  • pacman -Sg 软件包组: 查看某软件包组所包含的所有软件包。

  • pacman -Sc:清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。

  • pacman -Scc:清理所有的缓存文件

参考

1、MSYS2
https://www.msys2.org/

2、Install Terminal + git-bash + zsh + oh-my-zsh on Windows 10 | MiaoTony's小窝
https://miaotony.xyz/2020/12/13/Server_Terminal_gitbash_zsh/

3、msys2软件包管理工具pacman常用命令_hustlei的专栏

https://blog.csdn.net/hustlei/article/details/86687621

4、玩转 Ubuntu 20 桌面版 - 飞鸿影 - 博客园
https://www.cnblogs.com/52fhy/p/9571463.html

上一篇:移动 MSYS2 的安装目录


下一篇:事件处理之跨浏览器