玩转MacBook(Mac开发环境搭建和高效工作)

俗话说得好, “工欲善其事必先利其器”。MacBook作为开发工具,需要把它调节成适合自己的开发利器。

一、环境

电脑信息:MacBook Pro 16英寸

芯片:Apple M1 Pro

内存:32GB

系统:MacOS Monterey 12.2.1

二、工作提效篇

2.1 基本设置

2.1.1 设置触发角

快速回到桌面和锁屏

系统偏好设置 –> 桌面与系统保护程序 –> 屏幕保护程序 –> 触发角。 设置对应的触发行为,以下图为例,我设置了鼠标移到右上角就触发回到桌面的操作。鼠标移到右下角就触发进入睡眠状态的操作

image-20220401145223480

2.1.2 设置触控板

系统偏好设置 –> 触控板。按照自己的喜好设置。一般是使用默认设置。

image-20220401150750712

2.1.3 熟悉Mac快捷键

Mac 键盘快捷键

2.2 安装Xcode Command Line Tools

1
2
#安装命令
xcode-select --install

2.3 安装Homebrew

Homebrew是一款自由及开放源代码的软件包管理系统,快速安装or卸载软件。官网传送门

2.3.1 安装指引

step1:启动台 –> 终端,输入以下命令:

1
2
#原因 GitHub 的 gist 访问不了,所以获取不到安装的脚本文件。所以替换为码云的资源
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

image-20220401152634094

Step2:根据屏幕提示按下键盘上的“return(回车键)”,然后输入“管理员密码(本地账户开机密码)”按下“return(回车键)”即可进入自动安装界面

ps:如何遇到安装问题可以参考这篇博客https://blog.csdn.net/weixin_39504171/article/details/107570080

2.3.2 brew cask list

brew cask list

2.3.3 brew 安装常用工具

按需下载

工具名 安装命令 备注
工具名 安装命令 备注
git brew install git 版本管理工具
wget brew install wget 下载工具
curl brew install curl 下载工具
tmux brew install tmux 终端复用 神器
vim brew install vim 升级 vim 到 8.x 版本,替换系 统自带 vim
JDK brew cask install java open jdk java
tree brew install tree 目录展示工具
lua brew install lua lua 编程语言
coreutils brew install coreutils gnu 核心工具
bin brew install binutils gnu bin 工具
diff brew install diffutils gnu 比较工具
find brew install findutils gnu 查找工具
ag brew install the_silver_searcher 高效内容查找 工具, 比 grep、ack 更快的递归搜索文件内容
rzsz brew install lrzsz ssh 上传下载文件
go brew install go go 语言
node brew install node node
jq brew install jq 命令行 json 处理工具
htop brew install htop 代替 top
axel brew install axel 多线程下载工具
cloc brew install cloc 代码统计工具
shellcheck brew install shellcheck shell 脚本检 查工具
tldr brew install tldr 命令行示例
ncdu brew install ncdu 磁盘空间占用分
glances brew install glances 监控工具
figlet brew install figlet 艺术字转换
screenFetch brew install screenFetch 系统信息
nmap brew install nmap 网络扫描工具
ctop brew install ctop docker 容器监控工具
pstree brew install pstree 进程树查看
bash-completion brew install bash-completion bash 补全
lolcat brew install lolcat 彩虹文字
peco brew install peco go 写的极简过滤工具
cowsay brew install cowsay ascii 图片
graphviz brew install graphviz 拓扑图绘制工具,很对关系 绘制工具底层依赖
2.3.4 brew cask 安装常用工具

按需下载

工具名 安装命令 备注
cask brew tap caskroom/cask cask
cask update brew update && brew upgrade brew-cask && brew cleanup -
iterm2 brew install –cask iterm2 终端神器
google-chrome brew install –cask google-chrome chrome
firefox brew install –cask firefox firefox
alfred brew install –cask alfred 快捷键工具
dash brew install dash 文档工具
vscode brew install –cask visual-studio-code 文本编辑器,微软出品,首推
sublimetext brew install –cask sublime-text 文本 编辑器
postman brew install postman http 模拟 app
wireshark brew install –cask wireshark 网络抓包 工具
drawio brew install –cask drawio 流程图绘制工具, 可替代 visio
xmind brew install –cask xmind 思维导图工具
macpass brew install –cask macpass 免费的密码管理 工具
beyond-compare brew install –cask beyond-compare 老牌图形化比较工具
youdaodict brew install –cask youdaodict 有道词 典
typora brew install –cask typora markdown 工具, 首推
macdown brew install –cask macdown markdown 工 具
docker brew install –cask docker docker 必备
moom brew install –cask moom 窗口大小调整工具,收费
snip brew install –cask snip 截图工具
the-unarchiver brew install –cask the-unarchiver 解压工具, 可解 rar
keka brew install –cask keka 解压工具
fonts brew tap caskroom/fonts 安装字体
source-code-pro brew install –cask font-source-code-pro Adobe 出品编程字体
android-file-transfer brew install –cask android-file-transfer 安卓文件传输工具
licecap brew install –cask licecap 录屏软件
kap brew install –cask kap 视频录屏
sougou brew install –cask sogouinput 搜狗拼音
scroll-reverser brew install –cask scroll-reverser 触摸板滑动反转
go2shell brew install go2shell go2shell finder 直接跳转至命令行
rdm brew install rdm rdm redis desktop manager
imagemagick brew install imagemagick 图片编辑工具
motrix brew install –cask motrix 下载工具
clashx brew install –cask clashx
Charles brew install –cask Charles 网络抓包应用

2.4 安装iterm2

支持半透明, 边打命令、边看其它东东, 两不误。

有快捷键可以快速唤起窗口

2.4.1 下载iterm2

启动台 –> 终端,输入以下命令:

1
2
#使用brew下载
brew install --cask iterm2
2.4.2 设置iterm2配色

iterm2 配色官网

iterm2 –> preference –> profiles –> colors –> Color Presets –> solarized dark

2.4.3 安装oh-my-zsh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#使用wget下载oh-my-zsh
sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

#更改zsh为默认Shell
chsh -s /bin/zsh

#查看主题
ls ~/.oh-my-zsh/theme

#设置主题
#打开~/.zshrc文件
vim ~/.zshrc文件
#推荐选用ys主题,简洁并且该有的信息都有;找到ZSH_THEME这一行,把默认的修改为如下:
ZSH_THEME="ys"
#使配置生效
source ~/.zshrc

#下载自动补全插件和语法高亮插件
#切换目录
cd /Users/mike/.oh-my-zsh
#下载,也可以直接到github下载,放到/Users/mike/.oh-my-zsh/plugins文件夹下
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

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


#设置插件
#打开~/.zshrc文件
vim ~/.zshrc
#找到plugins=(git)这一行,把默认的修改为如下:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
#使配置生效
source ~/.zshrc

image-20220401172001951

2.4.3.1 安装插件报错

报错信息:启动iterm ohmyzsh报错:Insecure completion-dependent directories detected:

image-20220412093515367

原因:插件文件夹权限问题

解决方法:赋予权限后,重启iterm即可。

1
2
3
#授权
chmod 755 /Users/mike/.oh-my-zsh/plugins/zsh-autosuggestions
chmod 755 /Users/mike/.oh-my-zsh/plugins/zsh-syntax-highlighting
2.4.4 iterm实现上传下载
2.4.4.1 安装lrzsz和脚本
1
2
3
4
5
6
7
8
9
10
11
#使用brew下载lrzsz
brew install lrzsz
#切换到 /usr/local/bin
cd /usr/local/bin
#创建脚本
sudo vim iterm2-send-zmodem.sh
sudo vim iterm2-recv-zmodem.sh
#授予执行权限
sudo chmod 777 iterm2*
#查看lrzsz的位置,需要根据得到位置信息,修改对应脚本中,sz和rz的路径。不然会报错
brew list lrzsz

iterm2-send-zmodem.sh脚本详细信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
# 这个脚本来自 github,删掉了一些 ** 言论。

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
FILE=`osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
else
FILE=`osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
fi
if [[ $FILE = "" ]]; then
echo Cancelled.
# Send ZModem cancel
echo -e \\x18\\x18\\x18\\x18\\x18
sleep 1
echo
echo \# Cancelled transfer
else
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz "$FILE" --escape --binary --bufsize 4096
sleep 1
echo
echo \# Received $FILE
fi

iterm2-recv-zmodem.sh脚本详细信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
# 这个脚本来自 github,删掉了一些 ** 言论。

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
FILE=$(osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
else
FILE=$(osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
fi

if [[ $FILE = "" ]]; then
echo Cancelled.
# Send ZModem cancel
echo -e \\x18\\x18\\x18\\x18\\x18
sleep 1
echo
echo \# Cancelled transfer
else
cd "$FILE"
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz -E -e -b --bufsize 4096
sleep 1
echo
echo
echo \# Sent \-\> $FILE
fi
2.4.4.2 设置Iterm2的Tirgger特性

打开iTerm2 -> Perfences -> profiles -> default -> Advanced -> Triggers 的 Edit 按钮;添加两条trigger;

分别设置 Regular expression,Action,Parameters,Instant;

示例如下:

1
2
3
4
5
6
7
8
9
10
1.第一条
Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Instant: checked
2.第二条
Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
Instant: checked

具体图示:

image-20220406110255928

2.4.4.3 远端服务器上安装lrzsz
1
2
#使用yum安装lrzse
yum -y install lrzsz
2.4.4.4 上传下载测试

登陆远端服务器测试上传下载功能;

1
2
3
4
#在命令行输入 rz 就会弹出文件选择框,选择文件 choose 就开始上传,会上传到当前目录
rz
#sz fileName(你要下载的文件的名字) 回车,会弹出窗体 我们选择要保存的地方即可。
sz fileName

image-20220406113520632

2.4.4.5 免密登陆
1
2
3
4
5
6
#下载ssh-copy-id
brew install ssh-copy-id
#为远程服务器设置免密登陆
ssh-copy-id root@1.2.3.4
# 等价于
ssh-copy-id -i ~/.ssh/id_rsa.pub root@1.2.3.4 -p 22

ssh-copy-id 这个工具,它的原理其实是把自己的公钥(默认使用 ~/.ssh/id_rsa.pub 这个文件中的内容)复制到目标服务器的~/.ssh/authorized_keys 文件内。

可以利用 SSH 的配置文件来记住已有的配置,快速登录:

编辑~/.ssh/config 文件:

1
vim ~/.ssh/config

~/.ssh/config文件示例:

1
2
3
4
5
Host ss
HostName x.x.x.x
User root
Port 22
IdentityFile ~/.ssh/id_rsa

后续,仅需要ssh ss,即可免密登录。

2.4.5 常用快捷键
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
⌘ + Click:可以打开文件,文件夹和链接
⌘ + n:新建窗口
⌘ + t:新建标签页
⌘ + w:关闭当前页
⌘ + 数字 & ⌘ + 方向键:切换标签页
⌥⌘ + 数字:切换窗口
⌘ + enter:切换全屏
⌘ + d:左右分屏
⇧⌘ + d:上下分屏
⌘ + ;:自动补全历史记录
⇧⌘ + h:自动补全剪贴板历史
⌥⌘ + e:查找所有来定位某个标签页
⌘ + r & ⌃ + l:清屏
⌘ + /:显示光标位置
⌥⌘ + b:历史回放
⌘ + f:查找,然后用 tab 和 ⇧ + tab 可以向右和向左补全,补全之后的内容会被自动复制, 还可以用 ⌥ + enter 将查找结果输入终端
选中即复制,鼠标中键粘贴

2.5 安装SDKMAN(JAVA 语言版本控制)

SDKMAN是一种用于在大多数基于 Unix 的系统上管理多个软件开发工具包的并行版本的工具。它提供了方便的命令行界面 (CLI) 和 API,用于安装、切换、删除和列出可供安装的版本。

SDKMAN官网

2.5.1 sdkman下载

step1: 启动台 –> iterm2,输入以下命令:

1
curl -s "https://get.sdkman.io" | bash

image-20220402101945546

step2: 安装操作提示,输入提示的命令:

1
2
#$HOME是你自己的安装目录
source "$HOME/.sdkman/bin/sdkman-init.sh"

step3: 查看版本

1
2
#查看版本
sdk version

image-20220402102016834

2.5.2 sdkman命令

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#查看所有支持SDK,按q退出
sdk list
#查看指定SDK的不同版本,按q退出
sdk list java
#安装SDK指定版本
sdk install java 8.0.322-zulu
#删除SDK指定版本,注意,删除本地版本不会删除本地安装。
sdk uninstall java 8.0.322-zulu
#查看当前所有正在使用的SDK版本
sdk current
#使用当前sdk版本,只会使当前shell生效。
sdk use java 8.0.322-zulu
#使用默认设置,使所有shell都默认使用当前版本。
sdk default java 8.0.322-zulu
#查看当前指定SDK使用的版本
sdk current java
#查看安装路径
sdk home java 8.0.322-zulu
#查看Java home
echo $JAVA_HOME

#环境命令
#每次访问项目时都想切换到特定的 JDK 或 SDK?这可以通过.sdkmanrc项目目录中的文件来实现。可以通过发出以下命令自动生成此文件:
sdk env init
#查看.sdkmanrc文件
vim .sdkmanrc
#更新环境,根据当前使用的sdk版本更新。
sdk env
#重载环境
sdk env clear

#sdk帮助
sdk help

更多有用的命令和用法可以在SDKMAN Usage找到。

2.6 安装pyenv(python 语言版本控制)

pyenv 让您可以轻松地在多个 Python 版本之间切换。它简单、不显眼,并且遵循 UNIX 的传统,即做好一件事的单一用途工具。

2.6.1 pyenv下载

step1: 启动台 –> iterm2,输入以下命令:

1
2
#下载安装pyenv
brew install pyenv

image-20220412143215976

step2: 配置shell环境

1
2
3
4
5
6
#追加环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >>~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >>~/.zshrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi'>>~/.zshrc
#使配置生效
source ~/.zshrc

image-20220412144410891

step3: 查看版本

1
2
#查看版本
pyenv -v
2.6.2 pyenv命令(目前M1版本使用pyenv安装报错)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pyenv帮助
pyenv help
#pyenv命令
pyenv commands
#查看 pyenv 的版本
pyenv --version
#罗列当前已安装的所有 python 环境,如果是当前正在使用的环境,则前面会有个 *
pyenv versions


#查看可以安装的版本信息
pyenv install -l
#安装指定版本的 python
pyenv install 3.6.4
#更新本地数据库,安装指定版本的 python 后使用
pyenv rehash

#更改本机版本,重启不会造成再次更改
pyenv global 版本号
#会在当前目录创建 .python-version 文件,并记录设置的 python 环境,每次进入该目录会自动设置成该 python 环境
pyenv local 版本号
#更改当前 shell 下使用的 python 版本,临时生效,优先级高于 global
pyenv shell 版本号

# 创建虚拟环境
pyenv virtualenv 3.6.4 env-3.6.4
# 激活虚拟环境
pyenv activate env-3.6.4
# 退出虚拟环境
pyenv deactivate

2.7 安装arfled

Alfred 是一款本地搜索及快速启动工具,它可以帮你提高工作效率。alfred可以快速的搜索本地应用、搜索本地文件、执行终端命令、翻译、文件管理、音乐控制等等!

2.8 安装Dash

Dash 是一款功能强大的API文档浏览器和代码片段管理器,内置了丰富的API文档,多达150多种,可以在线下载各种开发API和文档资料,可以让您集中管理API文档,包括离线下载、搜索、查阅,包括各种主流的编程语言和框架,如Cocos2D, Cocos3D, Corona, CSS, HTML, Java, Objective-C, JavaScript, jQuery, Vue,React等, 不需要在到处下载 API 文档,Dash 已经自动集成了,并支持集成到Webstrom、Xcode、Alfred等软件中,非常的强大!开发者必备的API文档参考工具。

三、开发工具篇

3.1 JDK安装

3.2 官网下载安装
3.3 通过SDKMAN安装JDK
1
2
3
4
5
6
7
8
9
10
11
12
#查看jdk版本
sdk list java
#安装JDK指定版本
sdk install java 8.0.322-zulu
#使用默认设置,使所有shell都默认使用当前版本。
sdk default java 8.0.322-zulu
#查看安装路径
sdk home java 8.0.322-zulu
#查看Java home
echo $JAVA_HOME
#查看java版本
java -version

image-20220402111911870

3.2 Maven安装

3.2.1 通过SDKMAN安装Maven
1
2
3
4
5
6
7
8
9
10
#查看Maven版本
sdk list maven
#选择指定版本安装,不输入指定版本的话,默认安装最新稳定版本
sdk install maven 3.8.5
#使用默认设置,使所有shell都默认使用当前版本。
sdk default maven 3.8.5
#查看安装路径
sdk home maven 3.8.5
#查看maven版本
mvn -v

image-20220402113759641

3.3 IDEA安装

3.3.1 IDEA下载

下载传送门

其它途径

3.3.2 IDEA设置

IDEA环境设置参考

3.4 SourceTree安装

Sourcetree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,主要依赖可视化界面操作,省去繁琐复杂不容易理解的终端命令,Sourcetree也是Mercurial和Subversion版本控制系统工具,支持创建Local repositories 和remote repositories、submit、clone、push、pull 和merge等操作,可以应用于github或者码云,类似于Xcode集成的git功能,不过Sourcetree更专注于管理,具备更加直观的文件管理/源代码管理.

3.5 ShadowsocksX安装

3.6 Proxifier安装

Proxifier是一款SOCKS5客户端通用代理软件,支持网络应用程序通过HTTPS或SOCKS代理上网。Proxifier支持XP,Vista,Win7和MAC OS等操作系统,支持SOCKS4,SOCKS5,HTTP,TCP和UDP等协议; Proxifier还支持玩各种网页游戏,游戏速度非常流畅。

3.6 python安装

1
2
3
4
5
6
7
#安装python
brew install python
#查看软件安装位置
which python3
which pip3
#查看版本
python3 -V

image-20220411181256626

3.6.1 配置环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#修改配置
vim ~/.zshrc
#在文件最后加上

# python3.9
alias python='/opt/homebrew/bin/python3'
export PATH=“/opt/homebrew/bin/python3/bin:${PATH}

# 配置pip
alias pip='/opt/homebrew/bin/pip3'
export PATH=“opt/homebrew/bin/pip3:${PATH}

#使文件生效
source ~/.zshrc

#检查是否生效
python -V
pip -V

image-20220411182537523

image-20220411183152947