高效工作的 Mac 环境配置

工欲善其事,必先利其器

作为一个喜欢追求完美的程序猿,电脑是需要武装到牙齿的装备,遂以此文记录电脑的配置。


Mac OS

Mac 系统的快捷键映射

Symbol Key
Command Key
Option Key
Control Key
Shift Key

功能键

默认情况下,Mac 中 F1-F12 都是特殊功能,比如调节屏幕亮度。而当你需要键入 F1-F12 时(比如在使用 IntelliJ IDEA 的快捷键时),需要同时按住 fn

F1-F12 改成标准功能键:选择System Preferences > Keyboard,在Keyboard标签页中选中 Touch Bar shows F1, F2, etc. keys

Spotlight 快捷键

如果安装有 Alfred,建议 Spotlight 快捷键禁用,直接设置 Alfred 快捷键为 ⌘Space

输入法快捷键

一般来说切换输入法的快捷键是⌥Space,建议禁用,只保留 Caps lock 作为中英文切换。

其他快捷键

让双手尽量多的键盘和快捷键,少使用鼠标和触摸板,可以大大提高效率。

设置 Trackpad 轻点来点按

默认情况下按下触摸板才是点按(click)。我喜欢设置成用轻点作为点按:

选择System Preferences > Trackpad,在Point & Click标签页中选中Tap to click

三指拖拽

选择System Preferences > Accessibility, 在Trackpad Options标签中 Enable dragging three finger drag

三指拖拽设置

语音

macOS 自带了语音功能,可以用say命令让 Mac 开口说话:

1
say hello

可以和&&或者;配合使用来提示你某任务已经完成:

1
brew update && brew upgrade && brew cleanup ; say mission complete

通过命令行来听取发音还是有点麻烦。其实我们几乎可以在任何地方选中单词,然后使用快捷键⌥+ESC发音。仅仅需要这样设置一下:选择System Preferences > Accessibility > Spoken Content,在页面中选中Speak selection

Dock Position

默认 Dock 在屏幕下方。我们的屏幕一般都是 16:10,Dock 在屏幕下方的话会占据本来就不大的垂直空间。建议把 Dock 放到左边或者右边。


Remove all Dock icons[OCD]

本条目对于强迫症适用。

默认情况下 Dock 被一堆系统自带的应用占据着,而其中大部分我都很少使用,当我打开几个常用应用后,Dock 上会有很多图标,每个图标都会被挤得很小。所以我会把所有 Dock 上固定的图标都删掉,这样一来 Dock 上只有我打开的应用。

PS:Finder 图标是删不掉的。

除了一个一个删除图标,也可以通过这个命令来隐藏所有的固定图标:

1
defaults write com.apple.dock static-only -boolean true; killall Dock

恢复也非常简单:

1
defaults delete com.apple.dock static-only; killall Dock

PS:使用这个方法的话,Dock 上的Downloads也会被隐藏掉。

重置 Launchpad 上图标位置[OCD]

本条目对于强迫症适用。

新的应用被安装后,经常会跑到 Launchpad 的第一屏,所以它们的位置跟安装的顺序有关系,而我更希望它们可以按照某种更加稳定的顺序排列,比如按照系统默认的顺序:

1
defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock

在默认顺序中,Launchpad 第一屏只有 Apple 自家应用。

创建大小写敏感的工作区

在多人合作的项目开发时,因为 Mac 文件系统默认是大小写不敏感的,所以经常会出现一些诡异的问题。创建一个大小写敏感的工作区(workspace)来解决避免这些问题:

1
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 100g -volname workspace ~/Documents/workspace.dmg.sparseimage

可以通过三种方式挂载镜像:

  1. 直接双击打开 ~/Documents/workspace.dmg.sparseimage
  2. open ~/Documents/workspace.dmg.sparseimage
  3. hdiutil attach ~/Documents/workspace.dmg.sparseimage

常用工具

本节介绍一些常用的,跟开发没有直接关系的第三方应用及其设置。

Homebrew

包管理工具,官方称之为The missing package manager for macOS

安装步骤见官网。

PS:安装 brew 的时候会自动下载和安装 Apple 的 Command Line Tools。

iTerm2

iTerm2 是最常用的终端应用,是 Terminal 应用的替代品。提供了诸如Split Panes一群实用特性。它默认的黑色背景让我毫不犹豫的抛弃了 Terminal。

安装:

1
brew install iterm2

感谢 brew,我们可以通过命令行自动安装 iTerm2 了。

在终端里,除了可以用⌃E等快捷键(详见其他快捷键)之外,还可以使用⌥B⌥F等快捷键(具体可以参考这里)。前提是这样设置一下:

选择Iterm菜单 > Preferences > Profiles,选择你在使用的 Profile(默认是Default),在Keys标签页中把Left option (⌥) key acts asRight option (⌥) key acts as都设置成+ESC

在打开新的窗口/标签页的时候,默认情况下新窗口总是 HOME 目录,还需要我每次敲命令才能进入工作目录。如果想要这个新窗口在打开的时候就自动进入工作目录,需要如下设置:

选择Iterm菜单 > Preferences > Profiles,选择你在使用的 Profile(默认是Default),在General标签页中的Working Directory部分中选择Reuse previous seesion's directory

至此,Terminal 应用已经出色的完成了其历史使命。后面命令行就交给 iTerm2 啦。

在 iTerm2 中双击会自动选中对应的词,三击会选中对应的整行。选中的内容会自动进入剪贴板,不需要再按⌘C复制。

Oh My Zsh

默认的 Bash 是黑白的,没有色彩。而 Oh My Zsh 可以带你进入彩色时代。Oh My Zsh 同时提供一套插件和工具,可以简化命令行操作。后面我们会看到很多介绍,你会看到我爱死这家伙了。

安装方法见官网。

目前我使用的插件有:git z history ssh-agent

Oh My Zsh 使用了 Z shell(zsh),一个和 Bash 相似的 Shell,而非 Bash。

在 Z shell 中,~/.zshrc是最重要的配置文件。Oh My Zsh 在安装的时候会把当前环境的$PATH写入~/.zshrc中。这并不是我期望的行为,因为使用了 brew,我们基本不再需要去定制$PATH,而 Oh My Zsh 提供的默认$PATH$HOME/bin:/usr/local/bin:$PATH是非常合适的一个值,它把$HOME/bin加入了$PATH,可以让我们把自己用的脚本放到$HOME/bin下。

所以建议把~/.zshrc重置:

1
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

Oh My Zsh 还有很多有价值的插件

Git 常用别名

几乎每个人都会使用一些方法比如 Git 别名来提高效率,几乎所有人都会把使用git st来代替git status。然而这需要手动设置,每个人也都不完全一样。

Oh My Zsh 提供了一套系统别名(alias),来达到相同的功能。比如gst作为git status的别名。而且 Git 插件是 Oh My Zsh 默认启用的,相当于你使用了 Oh My Zsh,你就拥有了一套高效率的别名,而且还是全球通用的。是不是棒棒哒?下面是一些我常用的别名:

Alias Command
gapa git add --patch
gc! git commit -v --amend
gcl git clone --recurse-submodules
gclean git clean -id
gcm git checkout master
gcmsg git commit -m
gco git checkout
gd git diff
gdca git diff --cached
glola git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --al
gp git push
grbc git rebase --continue
gst git status
gup git pull --rebase
gwip git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"

完整列表请参考 快捷键

Rectangle

原生 macOS 下只能手动调整窗口大小,所以我们需要窗口管理工具。个人习惯使用 Rectangle.

1
brew install rectangle

Visual Studio Code

Visual Studio Code 是文本编辑工具。由于各种各样的插件,可以满足日常的各种需求。

安装:

1
brew install visual-studio-code

常用插件有 markdown-preview-enhanced, git 插件等。

z

在打开终端后,你是怎么进入项目的工作目录?是cd xxx⌃R还是用别名?

z 工具可以帮你快速进入目录。

这货的安装非常方便,甚至都不需要下载任何东西,因为它已经整合在了 Oh My Zsh 中。编辑~/.zshrc文件,在plugins=(git)这行中加上z变成plugins=(git z),然后运行source ~/.zshrc重新加载配置文件,就可以使用 z 了。

Vimium

Vimium 是一个 Google Chrome 扩展,让你可以纯键盘操作 Chrome,把你的 Chrome 变成“黑客的浏览器”。

安装方法请参考官方网站。

其他浏览器也有类似的工具,比如 FireFox 的 KeySnail

CheatSheet

CheatSheet 能够显示当前程序的快捷键列表,默认的快捷键是长按

CheatSheet

安装:

1
brew install cheatsheet

Alfred

Mac 用户不用鼠标键盘的必备神器,配合大量 Workflows,习惯之后可以大大减少操作时间。

上手简单,调教成本在后期自定义 Workflows,不过有大量雷锋使用者提供的现成扩展,访问这里挑选喜欢的,并可以极其简单地根据自己的需要修改。

安装:

1
brew install alfred

开发工具

Java

macOS 都不会自带 JDK 了,所以进行 Java 开发的话,需要下载 JDK。

JDK 安装文件是 pkg 格式,卸载和.app不一样,且没有自动卸载方式。

而 brew 提供了自动安装和卸载功能,能够自动从官网上下载并安装最新的 JDK。

1
brew install openjdk@17

在 macOS 上,你可以同时安装多个版本的 JDK。你可以通过命令/usr/libexec/java_home -V来查看安装了哪几个 JDK。

那问题来了,当你运行java或者 Java 程序时使用的是哪个 JDK 呢?在 macOS 下,java也就是/usr/bin/java在默认情况下指向的是已经安装的最新版本。但是你可以设置环境变量JAVA_HOME来更改其指向:

1
2
3
4
5
6
7
8
$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
$ JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)

其中JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home可以用JAVA_HOME=$(/usr/libexec/java_home -v 11)这种更加通用的方式代替。

  • brew install jdk can’t be IDEA detected
1
sudo ln -sf /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk

IntelliJ IDEA

Java 开发必备工具 IntelliJ IDEA。可以安装 Ultimate Edition:

1
brew install intellij-idea

系统必备工具

flux

帮助你保护自己眼睛,动态调节电脑显示效果

1
brew install flux

iina

简洁的 mac media player。

1
brew install iina

iTerm2 sudo

每次在 iTerm2 中输入 sudo 命令时都需要输入密码,这个操作对于有touchId的机器来说有些繁琐,规避下

1
2
3
sudo sed -i ".bak" '2s/^/auth       sufficient     pam_tid.so\'$'\n/g' /etc/pam.d/sudo
### 恢复操作
sudo mv /etc/pam.d/sudo.bak /etc/pam.d/sudo

说明:该命令主要是在sudo认证前加入TouchId的认证模块。在使用 iTerm2 时还需要 iTerm 需要进入设置,Advanced ,搜索 sudo ,把选项值改为 no

git config

1
2
echo .DS_Store >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global

参考资料

ocds-guide-to-setting-up-mac