高效工作的 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
作为中英文切换。
其他快捷键
让双手尽量多的键盘和快捷键,少使用鼠标和触摸板,可以大大提高效率。
-
苹果官方文档。当你在写代码,怎么通过快捷键让光标转移到行首、行尾、向上翻页或者将光标移左移一个词?都在这篇文档里。
Mac keyboard shortcuts for accessibility features
苹果官方文档。回车触发蓝底按钮,空格触发蓝边按钮,都出自这里。
设置 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 |
可以通过三种方式挂载镜像:
- 直接双击打开
~/Documents/workspace.dmg.sparseimage
open ~/Documents/workspace.dmg.sparseimage
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 as
和Right 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 能够显示当前程序的快捷键列表,默认的快捷键是长按⌘
。
安装:
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 | $ java -version |
其中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 | sudo sed -i ".bak" '2s/^/auth sufficient pam_tid.so\'$'\n/g' /etc/pam.d/sudo |
说明:该命令主要是在sudo认证前加入TouchId的认证模块。在使用 iTerm2 时还需要 iTerm 需要进入设置,Advanced ,搜索 sudo ,把选项值改为 no。
git config
1 | echo .DS_Store >> ~/.gitignore_global |