【Mac 相关】从零开始配置高效 Mac 开发环境
Mac 是大多数程序员的主力机器。如今各个互联网公司都会给员工配备 Mac 电脑,而拿到新电脑不免要鼓捣一番,安装各种环境、插件、软件等,以让自己用着更顺手。
本文记录了我从零开始配置一台新 Mac 的过程,基于我日常的开发习惯。尽管具有一定的主观性,但依然有相当的参考价值,读者可以按需选用。
建议首先完成系统设置和科学上网,再进行其他步骤。前者完成 Mac 的一些初步设置,后者提高终端命令如 brew
、git clone
的下载速度。
本文部分内容参考了 Github - bestswifter/macbootstrap。
系统设置
触控板设置
开启轻点点按:“系统偏好设置-触控板-光标与点按-轻点来点按”,打开该选项。这样无需按下触控板即可点击。
开启三指拖动:“系统偏好设置-辅助功能-指针控制-触控板选项-启动拖移”,打开该选项,并选择“三指拖移”。这样在移动窗口、拖动选择大片文字等时不需要按下触控板,只需要三指在触控板上拖动即可。
默认情况下,“左右切换全屏幕窗口”、“显示调度中心”三指/四指均可。开启三指拖动后,这两个操作自动换为四指。
打开 iCloud 同步
在系统偏好设置中登录 Apple ID,打开 iCloud。作用:
- 在多台设备间共享文件,比如桌面和文稿数据(需要在“iCoud 云盘-选项”中单独打开)
- 利用 Handoff 在多台设备之间无缝切换,比如我们在旧 Mac 上复制一段文本,可以直接粘贴在新 Mac 里。这在配置新 Mac 环境的时候尤其有用:我们可以在旧 Mac 中查看网页/笔记,复制某一条命令,然后直接粘贴到新 Mac 的终端中执行
- 下文的许多软件(如 SnippetsLab、Paste、MWeb 等)都可以使用 iCloud 同步。在新 Mac 中下载软件后,可以直接恢复旧 Mac 的数据
关闭文件验证、App 验证
跳过打开 DMG 文件时的验证过程:
defaults write com.apple.frameworks.diskimages skip-verify -bool true
defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true
defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true
默认情况下系统禁止安装第三方 App,通过以下代码绕过限制:
sudo spctl --master-disable
defaults write com.apple.LaunchServices LSQuarantine -bool false
禁用文字自动更正
随便打开一个文本编辑框,如“信息”,尝试以下输入会发现:
'
/"
被替换为了‘
/“
sdgs
被替换为了Sdgs
,首字母自动大写---
被替换为了—
通过以下命令禁用:
defaults write -g NSAutomaticQuoteSubstitutionEnabled -bool false
defaults write -g NSAutomaticDashSubstitutionEnabled -bool false
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false
也可以在“系统设置-键盘-文本”中设置。
打开全键盘控制
系统经常会出现如下图所示的 Confirm 框,包含“确定”、“取消”两个选项:
默认情况下,我们只能通过「回车」选择“确定”,如果想选择“取消”,必须通过鼠标点击。打开全键盘控制后,通过 Tab
键切换选项,聚焦到“取消”上,然后按下「空格」,就可以选择“取消”。
在“系统偏好设置-键盘-快捷键”页面下方,打开全键盘控制:
注意:无论焦点聚焦于哪个选项,按下「回车」都相当于是选择 “确定”。
当然,如果有 Touch Bar,可以直接在 Touch Bar 上完成操作。
显示电量百分比
点击状态栏电源图标,选择“显示百分比”。
加速 Zoom 动画
双击应用标题栏时,会自动调整窗口大小。下面的代码可以加速调整动画:
defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
下文提到的插件 Moom 也可以快速调整窗口大小。
关闭触控板前进后退
在浏览网页时,可以在触控板两指水平轻扫,控制页面的前进后退。
图:在 Chrome 中两指右扫,会出现页面后退提示符
但实际场景下,这个功能基本没用,且误触频率很高 (和页面的水平滚动条冲突)。建议关闭:系统设置 - 触控板 - 更多手势 - 在页面之间轻扫
,取消勾选。
开发环境
Homebrew
Homebrew 是 Mac 下的软件包管理工具,既可以用来安装开发环境,也可以用来安装 App Store 应用。
安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
如果报错 Failed to connect to raw.githubusercontent.com port 443: Connection refused
,重开一个终端窗口就可以了。
如果 Homebrew 速度很慢,需要配置终端科学上网。
iTerm2
安装:
brew cask install iterm2
快捷键:
- 光标移动:
⌃+A/E
:光标移动到开头/结尾⌃+W/U
:删除光标前一个单词/所有内容⌥+←/→
:光标左/右移动一个单词(需要配置,见下文)
- Tab 切换:
⌘+T
:新建 Tab⌘+数字
:选择某一 Tab⌘+←/→
:左/右切换 Tab- 这些快捷键在 Chrome 下也适用
- Pane 相关:
⌘+D
/⌘+⇧+D
:新建 Pane⌘+⌥+方向键
:切换 Pane⌘+⌃+方向键
:调整 Pane 大小
- 文本选择:
- iTerm2 默认选中即复制,不需要“先选中,再复制”
- 双击选择单词,三击选择整行,按下
⌘+⌥
矩形选择
如果命令写错怎么办?
- 简单的方法:
↑
,重新编辑上一条命令 ^{old}^{new}
:这个命令可以将上一条命令的{old}
部分替换为{new}
重新执行,比如vim a.txt
不小心写成vom a.txt
,可以执行^vom^vim
- thefuck:输错一个命令时,直接输入一个
fuck
,错误自动纠正,瞬间神清气爽 - 对于特别长的命令,可以使用 zsh 提供的快捷键
Ctrl-x + Ctrl-e
进入 vim 编辑
配置“光标左/右移动一个单词”:“Preferences-Profiles-Keys”,找到快捷键 ⌥←
,双击,弹出如下的对话框,Action 选择“Send Escape Sequence”,Esc+b
表示向前移动。双击 ⌥→
,Esc+
后面填 f
表示向后移动。
vim 语法高亮
首先执行 cp /usr/share/vim/vimrc ~/.vimrc
复制 vim 配置文件,然后执行 vim ~/.vimrc
,添加以下内容:
syntax on
zsh 插件
Mac 自带了 zsh,执行 zsh --version
检查是否安装了 zsh。
安装 oh-my-zsh:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
当 oh-my-zsh 安装成功后,我们会看到终端的文本不再是单调的白色,而是有了不同的颜色。这是因为 oh-my-zsh 提供了很多主题,可以通过编辑 ~/.zshrc
中的 ZSH_THEME
字段修改,默认是 robbyrussell
。服务端我使用 jonathan
。
oh-my-zsh 提供了一个
~/.zshrc
模板,安装后会替换默认的~/.zshrc
。下面以安装 oh-my-zsh 后的~/.zshrc
为准。
安装完成后,oh-my-zsh 会自动设置为默认 shell 工具。如果设置失败,手动执行:
sudo chsh -s $(which zsh) $(whoami)
此时再重新登录 shell,就可以看到效果了!
安装 zsh-autosuggestion 与 autojump:
# zsh-autosuggestion
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
# autojump
git clone git://github.com/wting/autojump.git
cd autojump
./install.py
zsh-autosuggestion 可以根据当前输入的内容,自动提示之前执行过的命令。补全命令的快捷键是 →
,如果觉得方向键离键盘热区较远,也可以使用 End
(Mac 下是 Fn + End
)。
autojump 可以快速跳转到某个目录,比如当我们执行过 cd ~/some-file
后,执行 j some
、j so
、j sf
都可以跳转到 ~/some-file
目录下。
安装 zsh-syntax-highlighting:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
输入命令后,如果命令正确,则高亮为绿色,反之高亮为红色。
安装完后,还需要在 ~/.zshrc
中加载这些插件,才能生效。执行 vim ~/.zshrc
,找到 plugins=...
,其内容如下所示:
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)
source $ZSH/oh-my-zsh.sh
改成这样:
# Add wisely, as too many plugins slow down shell startup.
plugins=(git zsh-autosuggestions autojump zsh-syntax-highlighting)
[[ -s /home/zsh/.autojump/etc/profile.d/autojump.sh ]] && source /home/zsh/.autojump/etc/profile.d/autojump.sh
autoload -U compinit && compinit -u
source $ZSH/oh-my-zsh.sh
然后 source ~/.zshrc
使插件生效。执行以下命令,验证插件是否安装成功:
- 验证 autojump:首先执行
cd ~/Downloads
跳转到目录~/Downloads
,然后只需要输入目录的若干个字符:j dow
,就可以自动跳转到~/Downloads
- 验证 zsh-autosuggestions:输入之前执行过的命令的前几个字符,就会自动提示完整命令,按
→
可补全
同步 bash 配置: 在 ~/.zshrc
的开头加入这两行(有的文件可能不存在,自行删除对应行):
source ~/.bash_profile
source /etc/profile
Git 配置
git commit
要求设置用户名和邮箱,通过以下命令设置,省略 --global
只对当前仓库设置:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
为常用 git 命令设置更短的别名(~/.gitconfig
):
[alias]
last = log -1
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow) %d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
co = checkout
ci = commit
st = status
br = branch
cp = cherry-pick
高效插件
显示网速:iStat Menus
iStat Menus 可以在状态栏显示网速,有利于判断网络情况:
扩展预览程序:QuickLookPlugins
Mac 的预览程序十分方便,按下空格可以快速预览几乎所有文件,安装插件可以扩展其功能。Github - sindresorhus/quick-look-plugins 提供了一系列可供选用的插件,以及每个插件的介绍、截图、源码。
我选择通过 Homebrew 安装自己需要的几个插件:
brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlimagesize
每个插件的功能:
qlcolorcode
:增加代码高亮qlstephen
:预览没有后缀名的纯文本文件,如README
qlmarkdown
:预览 Markdown 文件,自动渲染quicklook-json
:预览 JSON 文件qlimagesize
:预览图片时,显示图片大小与分辨率
其他插件请在 Github - sindresorhus/quick-look-plugins 自行选用,Catalina 系统的安装方法见 README。
快速调整窗口大小:Moom
Mac 系统自带了类似的功能:将鼠标悬浮到应用程序红绿灯的“绿灯”按钮上,然后按下 Alt
键,可以快速将应用程序调整至左、右半个屏幕。但是 Moom 的定制性更强。
Mac 的一款窗口布局工具,可以快速缩放应用/移动位置,比如将应用布局成以下状态,只需分别点击三下,如果此时将桌面布局保存为一个快照,之后就可以一键恢复布局。
默认情况下需要通过鼠标操作,配置全局快捷键后,只用键盘就可以完成全部操作,效率更高:
我设置的全局快捷键是 ⌘+⇧+M
,M
取自 Moom
的首字母,方便记忆。
打开“Show cheat sheet”选项,这样在按下快捷键后会显示速查表,功能包括:
Tab
:居中方向键
:贴合屏幕边缘⌘+方向键
:调整为屏幕的一半大小,并贴合到屏幕边缘空格
:最大化回车
:恢复原始大小和位置数字键
:自定义布局,在Preferences-Custom
中配置
效率神器:Alfred
Mac 效率神器,不多作介绍。快捷键:
⌥ Alt
+Space
打开 Alfred(我改成了双击⌥ Alt
)↑
、↓
切换高亮项⇧ Shift
使用「预览程序」预览当前高亮项↩︎ Enter
选择当前高亮项⌘ Command
+数字
快速选择某一项⌥ Alt
+↩︎ Enter
、⌘ Command
+↩︎ Enter
会对当前高亮项执行特殊操作,按下⌥
/⌘
就会显示功能提示
命令
quit
:退出某个应用程序
文件搜索
open
+ 文件名:按↩︎ Enter
打开文件,按下⌘ Command
再按↩︎ Enter
会打开文件所在的文件夹空格
+ 文件名:同上find
+ 文件名:打开文件所在的文件夹in
+ 字符串:搜索包含指定字符串的文件
文件搜索功能可以和很多 App 配合使用,比如可以通过题目搜索 Papers 中的论文。
目录导航
/
:进入根目录~
:进入用户目录*
:在当前目录下模糊搜索,如*top
可以搜到Desktop
常见使用场景
- Google 搜索:
google {query}
,或者直接输入{query}
- 计算器
- 有道翻译:Github - wensonsmith/YoudaoTranslate
- MWeb 文档搜索:Github - tianhao/alfred-mweb-workflow
- 颜色代码转换:Github,16 进制/RGB/HSL 互转,对于前端开发者比较有用
自定义网页搜索
Alfred 内置了许多搜索网站,如百度、Google 等。使用 Alfred 搜索的正确姿势:
- 快捷键激活 Alfred
- 输入要搜索的内容
- 按下
Command + 1
、Command + 2
等快捷键,选择一个搜索网站
这会直接打开搜索结果页。相比于「打开浏览器 - 打开网站 - 聚焦到输入框 - 输入关键字 - 搜索」的过程,使用 Alfred 搜索效率更高。
工作场景下,我会将公司内网搜索配置到 Alfred。配置方法:进入 Alfred 的 Preference 页面,按照下图 1、2、3、4 的步骤设置。
其中,第 4 步是公司内网搜索结果页的 URL,形如:
https://{域名}/search?query={搜索内容}
{query}
是一个占位符,表示你输入的搜索内容。
如何获取这个 URL?只需要打开内网搜索页,搜索任意内容,查看结果页的 URL。比如我在百度搜索“测试”,会得到这样一个 URL:
https://www.baidu.com/s?ie=utf-8&wd=测试
那么百度搜索的 Search URL 就是:
https;//www.baidu.com/s?wd={query}
同理,Google 的 Search URL 是:
https://www.google.com/search?q={query}
代码片段:SnippetsLab
SnippetsLab 可以用来分类整理各个代码片段,在写代码时随时取用。
SnippetsLab 支持 iCloud 同步,这意味着当我们切换到新 Mac 后,可以在 1 秒内立刻恢复所有的代码片段:
此外,通过 Alfred 插件,可以非常方便地搜索某个代码片段:
点击查看 Alfred 插件配置说明/使用方法/下载链接。使用方法:
⌥ Alt
+Space
打开 Alfred- 输入
snippet {query}
查询 - 快捷键:
↑
、↓
切换选择↩︎ Enter
将当前选择的代码片段复制到剪切板⌘ Command
+数字
快速选择某一代码片段⌥ Alt
+↩︎ Enter
在 SnippetsLab 中打开当前选择的代码片段⌘ Command
+↩︎ Enter
将当前选择的代码片段粘贴到屏幕最前方的应用中
记录剪切板历史:Paste(Deprecated)
使用 Alfred 即可实现相同的功能,无需再安装 Paste。设置路径:“Preference - Features - Clipboard History”,勾选“Keep Plain Text”、“Keep Images”、“Keep File Lists”。快捷键推荐设置为 ⌘ Command
+ ⇧ Shift
+ V
。
Paste 可以记录剪切板历史。Paste 同样支持 iCloud 同步。
快捷键:⌘ Command
+ ⇧ Shift
+ V
打开 Paste,⌘ Command
+ 数字
快速复制某一条记录。
科学上网
在终端安装 Homebrew、或者执行 git clone
时,一般情况下很慢(~100KB/s),需要安装科学上网工具,然后在终端科学上网。
一般互联网公司的 VPN 都自带科学上网功能。如果公司不提供 VPN,可以参考这篇文章。
微信小助手
Github - MustangYM/WeChatExtension-ForMac
录屏软件
可以使用 Kap 或系统自带的 QuickTime Player。
录制系统声音:SoundFlower
录制屏幕的时候只能录制自己说话的声音,录不了系统声音。安装 SoundFlower 可以录制系统声音。参考这里安装:
视频下载:Downie
简单高效的老牌视频下载软件,可以下载 Youtube、Bilibili、爱奇艺等主流网站的任意视频。只需要复制网页链接,在应用窗口中粘贴,就可以自动下载。下载速度取决于网速,不限速。还可以自动识别 Youtube 的播放列表,批量下载多个视频。
其他软件
记笔记:MWeb
MWeb 是一款非常优秀的 Markdown 笔记软件。在尝试过印象笔记、Typora、Bear、Ulysses 等多款软件后,个人认为没有一款软件可以替代 MWeb,后者对 Markdown 与 LaTex 的支持相当完善,同时保持了良好的使用体验。此外,MWeb 也有 iOS 应用,在不内购的情况下可以阅读、编辑笔记,无法新建笔记,足以满足日常需求。
MWeb 可以通过 iCloud 实现同步,只需要将文档库保存在 iCloud 云盘下即可。每个设备都使用云盘中的文件夹作为 MWeb 的文档库。
[2021.08.24 更新]
MWeb 支持文件夹形式的文档管理功能,对我而言,它更重要的角色是作为文档库,整理我的所有文档。日常使用中,我会配合 mweb alfred workflow 插件,根据关键字,快速搜索和查看某篇文档。
最近发现,Typora 所见即所得的风格非常适合 Markdown 写作,不需要频繁切到预览模式。因此在需要输出长文的情况下,我会选择 Typora。这个场景和 MWeb 的适用场景并不冲突。
我制作的一些 MWeb、Typora 主题:
- https://github.com/imageslr/mweb-themes
- https://github.com/imageslr/typora-theme-bear
- https://github.com/imageslr/typora-theme-lark
待办事项管理:OmniFocus
OmniFocus 是一个 GTD 工具,我使用它来安排我的待办事项。OmniFocus 支持多端同步,数据存储在 OmniFocus 服务器中,或者个人 WebDAV 服务器。
每日计划:OmniOutliner
OmniOutliner 是一款简洁、专注的大纲制作软件,我使用它来安排我的每日计划。将 OmniOutliner 文件存储在 iCloud 云盘中,可以实现多端同步。
浏览器:Chrome
“系统偏好设置-通用-默认网页浏览器”,选择“Google Chrome”
PDF 阅读:PDF Expert
PDF 阅读工具
代码编辑:VS Code
下载地址: 官网。
下载完成后,打开 VS Code,按下 ⌘ Command
+ ⇧ Shift
+ P
,输入 command
,选择 Shell Command: Install 'code' command in PATH
。这样就可以在 iTerm2 中,直接打开某个文件夹:
code . // 在 VS Code 中打开当前目录
code ~/my-blog // 在 VS Code 中打开 my-blog 目录
code ~/.zshrc // 在 VS Code 中打开 .zshrc 文件,类似于 vim ~/.zshrc
视频播放:IINA
单词翻译:Bob
Github 下载。快捷键十分好用,支持截图翻译。有了它以后,就不需要在 Chrome 里安装划词翻译插件了。
单词学习:欧路词典
如果你希望随手记录自己遇到的生词,并定期复习,那么可以使用欧路词典。功能:
- 全局鼠标划词翻译,一键加入单词本,还可以记笔记。
- 全平台同步。工作时在电脑上取词,通勤时在手机上复习。
- 支持 FlashCard 形式的单词复习,搭配艾宾浩斯记忆法,自动设置学习计划。
其他
- 绘图工具:draw.io desktop。
- 截图工具:Xnip。
- 类似于 Moom 的窗口管理工具:Amethyst
- 键盘清理工具:KeyboardCleanTool,可以在清理键盘的时候锁定键盘。
- 番茄钟:Stretchly,既能充当番茄钟,还能用弹窗提醒你起来活动活动,对程序员来说很有用,介绍文章。类似的工具还有 Just Focus。
- Stretchly 的弹窗提醒会随机展示一句舒展身体的 idea,我翻译的中文版
- 屏幕取色:Sip,或者 uTools 自带的取色工具,前端开发经常用到。(Mac 自带的数码取色器可以显示为十六进制,但不能复制到剪贴板)
- 状态栏管理:Bartender 4,可以自定义隐藏状态栏的图标,或者更新时显示 15s 再隐藏,按住 Command 可以自由拖动排列顺序;另一个应用是 Hidden Bar,App Store 免费下载,同样好用,我用来和 Bartender 配合,隐藏一些不受后者控制的图标。
- 壁纸应用:pap.er,专为 Mac 设计的壁纸应用,简洁易用,图片质量也很高。
- 触控板增强:BetterTouchTool(介绍视频),论坛里提供了很多预设,可以直接导入使用。我个人认为按住 Command 显示 Dock 栏程序图标是比较有用的,但功能太复杂,所以放弃了,喜欢配置的话可以尝试一下。
- 快速连接 AirPods:
ToothFairy,菜单栏一键连接 AirPods。直接通过蓝牙图标连接,更稳定快捷。 - Finder 增强:Default Folder X,访问深层嵌套的文件更迅速,可以记录近期访问的文件。
- Dock 栏增强:Contexts,隐藏原生的 Dock 栏 (程序坞),只显示需要关注的应用程序,鼠标移动到屏幕边缘即可快速显示。
附件
百度云,提取码: 6641
如果安装时提示“已损坏”,在终端执行:
# 允许打开“任何来源”的软件
sudo spctl --master-disable
# 如果还不行
sudo xattr -r -d com.apple.quarantine <把应用程序拖到终端>