配置Mac系统的开发环境

180 阅读3分钟

最近在公司申请到了一台新的21款MacBook Pro,16英寸,芯片是Apple M1 Pro的,32GB内存,HD512G,并回购了原来使用的18款MacBook Pro,15英寸,Intel芯片,16G内存,HD256G,配置上面有了不小的提升,并且M1芯片的Mac使用起来不发烫,工作的快乐这不就又回来了嘛!

俗话说得好,工欲善其事,必先利其器。在下根据之前的办公习惯,火速安装了一些效率软件,在此也不藏着掖着,就都奉献给在座的各位了。

  1. 安装 iTerm2,一款替代Mac自带的终端软件
  2. 安装 Homebrew,一款可用在macOS/Linux系统上面的包管理工具
  3. 安装 zsh,一款好用的shell软件,安装后如果在zsh shell中找不到brew指令,则需要将brew配置到PATH环境变量中
// 将brew可执行文件所在目录添加到 ~/.zshrc 文件中
echo "export PATH=/opt/homebrew/bin:$PATH" >> ~/.zshrc
// 安装autosuggestions插件,可以根据命令的使用记录,提供自动补全提示功能
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
// 安装syntax-highlighting插件,提供语法高亮功能
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
cat /etc/shells    // 查看当前系统中可用的shell类型
echo $SHELL    // 查看当前用户默认的shell
echo $0    // 查看当前用户正在使用的shell
cat /etc/passwd | grep `whoami`    // 查看用户配置的默认shell
ps -ef | grep `echo $$` | grep -v ps | grep -v grep    // 查看当前shell进程
ssh-keygen -t rsa   // 使用rsa加密算法,生成公私钥对,一直默认选择即可
cat ~/.ssh/id_rsa.pub    // 输出公钥内容,可以copy到github或用于ssh登录
    ssh-copy-id user@remote [-p port]    // ssh server默认监听22端口,将公钥上传到remote机器user家目录的~/.ssh/authorized_key文件中
    ssh user@remote -p port 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub    // 如果ssh-copy-id不可用,可以执行该指令上传公钥
scp a.txt user@remote:~/    // 将本地的a.txt文件上传到ip=remote的user家目录下
~/.ssh/config 创建文件,写入以下内容,可以实现更方便的登录远程主机
Host host
    HostName example.com或者ip
    User user
    IdentityFile ~/.ssh/id_rsa
    Port 22
  1. 安装 git 理解工作区、暂存区、本地仓库的概念,熟悉常用git命令
brew install git
// 常用git命令如下
git pull/push/add/commit/fetch/status/merge/rebase
git commit -am "msg"
git log --pretty=oneline --graph —all
git reset --hard head  // 丢弃当前工作区和暂存区的修改
git rebase origin/master  // 将当前分支的commit按顺序变基到origin/master分支
git rebase -i head~3 head  // 操作最近3个commit
git rebase --onto origin/master head~1 head  // 将当前分支最近1个commit变基到origin/master分支
git stash [pop/apply/drop/list]
git checkout -b dev_anin  // 创建dev_anin分支,并指向当前commit
git branch -d dev_anin  // 删除本地仓库dev_anin分支
git push -d origin dev_anin  // 删除远程仓库dev_anin分支
git remote show origin  // 展示远程仓库的一些信息
git remote prune origin  // 将远程仓库中已经删除的origin/*分支在本地也删除
// 统计个人代码提交行数
git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | grep -v vendor | grep -v output | grep -v script | grep -v conf | grep -E "go$" | awk '{ add += $1 ; subs += $2 ; total += $1 + $2 ; net += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s, net increase lines: %s\n",add,subs,total,net}'
--since=2018-10-01 --until=2018-12-31 添加起止时间
-n 1 指定最近1个commit
  1. 安装 Alfred,可以通过关键字来执行本地或网络搜索,以及自定义控制行为
  2. 安装 Spectacle [开源地址],一款便捷的分屏软件。Spectacle已经不再继续维护了,其用户建议使用 Rectangle 作为其开源替代,不过本人目前还在使用Spectacle
  3. 安装 CheatSheet,通过它可以快速获取本地其他软件的快捷键,让你的操作效率一键起飞
  4. 安装 Sublime Text,一款简洁的文本编辑器
  5. 安装 Docker,至少可以在本地快速启动Redis、MySQL进程
  6. 安装 Sequel Pro,一款通过图形界面来管理MySQL的前端工具,可以用来替代Navicat等付费软件,当然使用体验远不如后者
  7. 安装 Java 及 Idea 本地开发工具
brew install openjdk
    brew install openjdk@8    // 如果安装openjdk8,对于M1芯片,无法直接安装,需要使用下面的指令 
    brew tap adoptopenjdk/openjdk
    brew install --cask adoptopenjdk8 // installed at /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home,在idea中配置该路径即可使用 
// 安装完成idea,创建java项目
Project Settings -> Modules 中配置jdk版本
ll /Library/Java/JavaVirtualMachines/
drwxr-xr-x  3 root  wheel    96B  4 21  2021 adoptopenjdk-8.jdk
lrwxr-xr-x@ 1 root  wheel    45B  4 10 12:48 openjdk.jdk -> /opt/homebrew/opt/openjdk/libexec/openjdk.jdk
// 根据需要添加 Module SDK即可
  1. 安装 Python 及 Pycharm 本地开发工具
// 先安装conda,conda有anaconda和miniconda两个版本,个人倾向使用miniconda
brew install --cask miniconda
conda init "$(basename "${SHELL}")"    // 执行初始化指令
conda create -n py37    // 创建一个空环境
conda activate py37    // 激活py37环境,会从默认的base切换到py37环境
conda install python=3.7    // 安装python3.7版本,在Apple Silicon系统上无法使用3.8以下版本,执行下面指令后才能安装python 3.7版本
    conda config --env --set subdir osx-64
conda --version    // 查看版本
conda env list    // 查看全部环境
// 安装完成pycharm,创建python项目
// 在project中设置python interpreter,选择conda environment,找到上面创建好的 py37 环境
/opt/homebrew/Caskroom/miniconda/base/envs/py37/bin/python
  1. 安装 Go 及 Goland 本地开发工具,安装go的版本管理工具 gvm,安装和使用说明见Github ReadMe
brew install go
// Installed at /opt/homebrew/Cellar/go/1.20.2/bin/go
// Symbolic link /opt/homebrew/bin/go -> ../Cellar/go/1.20.2/bin/go
echo "source /Users/anin/.gvm/scripts/gvm" >> ~/.zshrc // 安装gvm后如果找不到gvm命令,可以执行该指令
gvm install go1.19
gvm use go1.19
gvm use system
gvm version
gvm list
go get xxx/xxx/xxx   // 更新项目go.mod中的 xxx/xxx/xxx 依赖,并下载依赖对应版本到 /Users/anin/go/pkg/mod
go mod tidy    // 整理go.mod文件中依赖,下载go.mod中指定版本依赖至 /Users/anin/go/pkg/mod 中
go mod why xxx/xxx/xxx    // 检查依赖 xxx/xxx/xxx 的原因,并列出依赖链路
// go代码中格式化可能会出现多个空行,以下指令可以只保留一个空行
go mod tidy | git add . | git diff --name-only head | grep -E "go$" | xargs -I{} sh -c "gsed -i '/import (/, /)$/{/^$/d}' ./{} && goimports -w {}"
    brew install gsed    // installed at /opt/homebrew/bin/gsed
    go install golang.org/x/tools/cmd/goimports    // installed at /Users/anin/go/bin/goimports, 可能需要将 /Users/anin/go/bin 添加到PATH变量中
// 执行git merge或rebase代码时,go.mod与go.sum文件经常发生冲突,删除冲突标识,执行go mod tidy即可保留较新依赖版本,并修复go.sum文件,也可以直接执行下面指令一键解决冲突
sh -c "sed '/<<<</d' go.mod | sed '/====/d' | sed '/>>>>/d' > go.mod.bak" && rm go.mod && mv go.mod.bak go.mod && go mod tidy
// 安装完成goland,创建go项目 
// 配置goland中GOROOT,/opt/homebrew/Cellar/go/1.20.2/libexec 
// 配置goland中Go Mudules,开启 Enable Go modules integration 
go mod init [module-path] 

go代码中格式化可能会出现多个空行,一种方式是手动执行上面的那行指令,另一种解决方式是在Goland做如下配置,即可在CMD+S保存时,自动格式化 Settings -> Tools -> File Watchers -> gsed + goimports 设置技巧是在File Watchers页面,点击+号,选择goimports,然后修改Name和Program为gsed,修改Arguments参数,注意Advanced Options不要选中

-i "/import (/, /)$/{/^$/d}" $FilePath$

image.png image.png