原文链接:http://www.h5con.cn/macdao/ocds-guide-to-setting-up-mac/blob/master/README.md
原文链接:https://juejin.im/entry/58ca60d461ff4b006018aa2f
Awesome Mac:https://github.com/jaywcjlove/awesome-mac/blob/master/README-zh.md#quicklook插件
我认为“一个高效的 Mac 工作环境”有以下几个特点:
-
自动化
举个例子。手动安装一个应用,需要1)打开浏览器,2)搜索应用的名字,3)打开应用网站,4)寻找下载链接和安装方法,5)下载并等待下载完成,6)安装下载文件,7)可能还有后续的安装步骤。而自动化安装一个应用,只需要1)打开终端工具,2)敲入安装命令,3)等待完成这几个步骤。
自动化可以大大简化操作,提高效率。
-
统一
我经常结对编程,偶尔会遇到快捷键不一样,命令不同等问题。我强烈建议,至少在一个团队中,大家尽量使用相同的快捷键、命令等环境。(我记得有个实践就是这个,可是我一直没找到该实践的名字和出处,求告诉)
-
够用
够用就好,如果系统本身已经满足了我的需求,我不会再使用第三方工具。
-
效率
效率,一切都是为了效率。
1. OS X
本节介绍操作系统本身的一些设置。
功能键
默认情况下,F1-F12 都是特殊功能,比如调节屏幕亮度。而当你需要键入 F1-F12 时(比如在使用 IntelliJ IDEA 的快捷键时),需要同时按住 Fn。这对于开发人员来说是非常不方便的。
把 F1-F12 改成标准功能键:选择System Preferences
> Keyboard
,在Keyboard
标签页中选中Use all F1, F2, etc. keys as standard function keys
。
全键盘控制
当你在 Sublime Text 里关闭文件时,可能会遇到这样的对话框:
注意这个Save
按钮跟其他两个按钮不太一样,它的底色是蓝的。这种按钮被称为默认按钮,除了用鼠标点击触发外,还可以通过回车键触发。
那么问题来了,如果你不想保存,想点击Don't Save
,是不是只能用鼠标点击了呢?
并不是这样:选择System Preferences
> Keyboard
,在Shortcuts
标签页中选择All controls
;或者使用快捷键⌃F7
。之后这个对话框会变成这样:
这个Don't Save
按钮有了一圈蓝边,这个意味着你可以通过空格键触发。不仅如此,你还可以用Tab
键把蓝边转移到其他按钮,来实现全键盘控制。
除了All controls
这个方法,你还可以用⌘⌫
来选择Don't Save
。⌘⌫
的作用是在包含“删除”或“不存储”按钮的对话框中选择“删除”或“不存储”。
除了上述两个办法之外,居然还有个方法!就是按⌘D
!据说是因为按⌘+按钮的大写首字母
可以触发该按钮。可是!我按了⌘C
和⌘S
想取消和保存都没用!但是⌘D
真的有用!如果仅仅是这也就算了,可是我又手贱试了下 TextEdit,在关闭未保存的文件时弹出的对话框上有三个按钮Delete
、Cancel
和Save
。然而⌘D
和⌘C
都没用,但是!⌘S
可以保存!我完全不能理解!我整个人几乎都是崩溃的,只好以咆哮体写下这段文字。如果谁能解释请务必告诉我,必有重谢!
⌘C
不能用应该是因为它绑定到了复制功能;而⌘D
不能用因为它的作用是从“打开”对话框或“存储”对话框中选择“桌面”文件夹。
在这个对话框上,你可以用Esc
来执行Cancel
操作。
Spotlight 快捷键
中文版 OS X 的 Spotlight 的快捷键是⌃Space
。这个快捷键有一些问题:
- JetBrains 的 IDE,比如 IntelliJ IDEA、WebStorm 等都使用
⌃Space
作为自动完成这个最常用功能的快捷键。我不建议更改 IDE 的快捷键,而建议更改 Spotlight 的快捷键。 - 对于没有添加中文输入法的 Mac 来说,Spotlight 的快捷键是
⌘Space
。英语国家的人都是这样的。所以我建议把 Spotlight 的快捷键设置为⌘Space
,跟他们一致。
输入法快捷键
一般来说切换输入法的快捷键是⌘Space
。由于我建议把 Spotlight 的快捷键设置为⌘Space
,所以我建议把切换输入法的快捷键设置为⌥Space
。
其他快捷键
让双手尽量多的键盘和快捷键,少使用鼠标和触摸板,可以大大提高效率。
-
苹果官方文档。当你在写代码,怎么通过快捷键让光标转移到行首、行尾、向上翻页或者将光标移左移一个词?都在这篇文档里。
-
Mac keyboard shortcuts for accessibility features
苹果官方文档。回车触发蓝底按钮,空格触发蓝边按钮,都出自这里。
设置 Trackpad 轻点来点按
默认情况下按下触摸板才是点按(click)。我喜欢设置成用轻点作为点按:
选择System Preferences
> Trackpad
,在Point & Click
标签页中选中Tap to click
。
词典
OS X 自带了词典(Dictionary)。你几乎可以在任何应用中通过三指轻拍触摸板来现实对应单词的释义。
也可以打开 Dictionary 应用来查找单词。
可以在 Dictionary 应用中添加英汉汉英词典。
Dock Position
默认 Dock 在屏幕下方。我们的屏幕一般都是 16:10,Dock 在屏幕下方的话会占据本来就不大的垂直空间。建议把 Dock 放到左边或者右边。
更改 Caps Lock 键为 Control 键
我经常用到Control
键,但这个键在键盘的左下角,很难按到。同时我发现我很少使用Caps Lock
键,我一般会用Shift
键加字母来输入大写字母,或者先输入小写再(通过快捷键)转换成大写。
基于以上原因,我把Caps Lock
键的功能改成了Control
键。很多同事也都这么做的,可能是受到 HHKB 的影响。
设置方法:选择System Preferences
> Keyboard
,在Keyboard
标签页中点击Modifier Keys...
按钮,在弹出的窗口中,把Caps Lock (⇪) Key:
对应的选项改成⌃ Control
。
Remove all Dock icons[OCD]
本条目对于强迫症适用。
默认情况下 Dock 被一堆系统自带的应用占据着,而其中大部分我都很少使用,当我打开几个常用应用后,Dock 上会有很多图标,每个图标都会被挤得很小。所以我会把所有 Dock 上固定的图标都删掉,这样一来 Dock 上只有我打开的应用。
PS:Finder 图标是删不掉的。
除了一个一个删除图标,也可以通过这个命令来隐藏所有的固定图标:
defaults write com.apple.dock static-only -boolean true; killall Dock
恢复也非常简单:
defaults delete com.apple.dock static-only; killall Dock
PS:使用这个方法的话,Dock 上的Downloads
也会被隐藏掉。
重置 Launchpad 上图标位置[OCD]
本条目对于强迫症适用。
新的应用被安装后,经常会跑到 Launchpad 的第一屏,所以它们的位置跟安装的顺序有关系,而我更希望它们可以按照某种更加稳定的顺序排列,比如按照系统默认的顺序:
defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock
在默认顺序中,Launchpad 第一屏只有 Apple 自家应用。
创建大小写敏感的工作区
在多人合作的项目开发时,因为 Mac 文件系统默认是大小写不敏感的,所以经常会出现一些诡异的问题。创建一个大小写敏感的工作区(workspace)来解决避免这些问题:
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
Keychain Access
钥匙串访问(Keychain Access)是一个 OS X 应用程序,对我来说它最大的功能就是查看已经保存的各种账号和密码,包括 Wi-Fi 密码。
2. 常用工具
本节介绍一些常用的,跟开发没有直接关系的第三方应用及其设置。
Homebrew
包管理工具,官方称之为The missing package manager for OS X
。
安装步骤见官网。
有了 brew 以后,要下载工具,比如 MySQL、Gradle、Maven、Node.js 等工具,就不需要去网上下载了,只要一行命令就能搞定:
brew install mysql gradle maven node
PS:安装 brew 的时候会自动下载和安装 Apple 的 Command Line Tools。
brew 的替代品有 MacPorts,现在基本没人用它。
Homebrew Cask
brew-cask 允许你使用命令行安装 OS X 应用。比如你可以这样安装 Chrome:brew cask install google-chrome
。还有 Evernote、Skype、Sublime Text、VirtualBox 等都可以用 brew-cask 安装。
brew-cask 是社区驱动的,如果你发现 brew-cask 上的应用不是最新版本,或者缺少你某个应用,你可以自己提交 pull request。
安装步骤见官网。
应用也可以通过 App Store 安装,而且有些应用只能通过 App Store 安装,比如 Xcode 等一些 Apple 的应用。App Store 没有对应的命令行工具,还需要 Apple ID。倒是更新起来很方便。
几乎所有常用的应用都可以通过 brew-cask 安装,而且是从应用的官网上下载,所以你要安装新的应用时,建议用 brew-cask 安装。如果你不知道应用在 brew-cask 中的 ID,可以先用brew cask search
命令搜索。
iTerm2
iTerm2 是最常用的终端应用,是 Terminal 应用的替代品。提供了诸如Split Panes
等一群实用特性。它默认的黑色背景让我毫不犹豫的抛弃了 Terminal。
安装:
brew cask install iterm2
感谢 brew-cask,我们可以通过命令行自动安装 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 sublime history rbenv bundler rake
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
重置:
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
2016年6月17号的一次提交后,
zshrc.zsh-template
就不再修改$PATH
了。请找到# export PATH=$HOME/bin:/usr/local/bin:$PATH
这一行,把前面的#
去掉。
Oh My Zsh 还有很多有价值的插件。
替代品有 Oh My Fish。基于 Fishshell 。
Stow
GNU stow 是管理符号链接(symlink)的一个小公举。主要用于 symlink 你的 dotfiles 如 emacs,git,fish/zsh 的配置文件。安装只需要
brew install stow
安装了 stow 之后,我们可以开始 symlink 一些 dotfiles 了。完整使用 stow 和 dotfiles 的流程可以参考 http://www.h5con.cn/jcouyang/dotfiles
当你的 dotfiles 都妥妥的 symlink 到 ~/dotfiles
后,push 到 github 上就再也不怕换电脑了。
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 --recursive |
gclean | git reset --hard && git clean -dfx |
gcm | git checkout master |
gcmsg | git commit -m |
gco | git checkout |
gd | git diff |
gdca | git diff --cached |
glola | git log --graph --pretty = format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all |
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 -m "--wip--" |
完整列表请参考:http://www.h5con.cn/robbyrussell/oh-my-zsh/wiki/Plugin:git
Scroll Reverser
当你在浏览一个很长的网页时,你看完了当前显示的内容,想要看后续的内容,你可以在 Trackpad 上双指上滑,或者鼠标滚轮向上滚动。这是被称作“自然”的滚动方向。
然而在 Windows 里鼠标滚动的行为是相反的:鼠标滚轮向下滚动才会让浏览器显示后续的内容,向上滚动会达到页面的顶部。你可以在 OS X 的系统偏好设置里修改(选择System Preferences
> Trackpad
,在Scroll & Zoom
标签页中不选中Scroll direction: natural
),但是这样会同时改变鼠标滚轮的方向和 Trackpad 的方向。
要想只改变鼠标滚轮的方向,而保持 Trackpad 依旧是“自然”的,我们需要 Scroll Reverser:
brew cask install scroll-reverser
PS:这货会让三指点击失效
ShiftIt
原生 OS X 下只能手动调整窗口大小,所以我们需要窗口管理工具。我用过很多窗口管理工具,可惜大部分工具都存在快捷键冲突的问题(对我来说主要是 IntelliJ IDEA)。ShiftIt 是少见的没有冲突的窗口管理工具:
brew cask install shiftit
PS:ShiftIt的旧版本需要安装 X11,最新版本已经修正了这个问题。
替代者有 SizeUp,主要快捷键和 ShiftIt 相同。
当然如果喜欢 hacking,Slate 是个不错的 hackable 的窗口管理工具。配置可以参照 http://thume.ca/howto/2012/11/19/using-slate/
Sublime Text 2
安装:
brew cask install sublime-text
在命令行中指定使用 Sublime Text 打开某文件,是一个非常常用的功能,一般我们会按照 OS X Command Line 中所说执行 ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/subl
来增加subl
链接。但是如果你用 brew-cask 安装的话,恭喜你,你不需要运行这个命令,因为 brew-cask 自动帮你做了这件事情。而且你卸载 Sublime Text 的时候 brew-cask 会自动删掉这个链接。
同时 Oh My Zsh 也提供了 Sublime Text 插件,叫做sublime
。参考:http://www.h5con.cn/robbyrussell/oh-my-zsh/tree/master/plugins/sublime,这个插件和通过 brew-cask 安装的 Sublime Text 完美兼容。
替代品有 Atom、TextMate、Sublime Text 3 等,跟 Sublime Text 2 一样,用 brew-cask 安装的话命令行工具会被自动加入$PATH
。
MacDown
MacDown 是 Markdown 编辑器。由于 Mou 一直不支持代码高亮,我就转向了 MacDown。完美支持 GFM。
我特别喜欢 Markdown,我用 Makdown 来写文章(包括本文),写幻灯片(reveal.js)。Markdown 可以让我专注于内容本身,而无需花精力在排版和样式上。
安装:
brew cask install macdown
z
在打开终端后,你是怎么进入项目的工作目录?是cd xxx
,⌃R
还是用别名?
z 工具可以帮你快速进入目录。比如在我的 Mac 上运行z cask
就会进入/usr/local/Library/Taps/caskroom/homebrew-cask/Casks
目录。
这货的安装非常方便,甚至都不需要下载任何东西,因为它已经整合在了 Oh My Zsh 中。编辑~/.zshrc
文件,在plugins=(git)
这行中加上z
变成plugins=(git z)
,然后运行source ~/.zshrc
重新加载配置文件,就可以使用 z 了。
替代品有 autojump。autojump 需要使用 brew 安装。
Vimium
Vimium 是一个 Google Chrome 扩展,让你可以纯键盘操作 Chrome,把你的 Chrome 变成“黑客的浏览器”。
安装方法请参考官方网站。
其他浏览器也有类似的工具,比如 FireFox 的 KeySnail。
LastPass
LastPass 是管理密码的工具,支持二次验证,提供所有浏览器插件以及 Mac 桌面版本。
最重要的是,它提供 命令行 的版本,可以直接通过 brew 安装
brew install lastpass-cli --with-pinentry
之后,只需要登陆:
lpass login you@email.com
就可以拷贝密码或者集成到其他命令中了:
lpass show --password gmail.com -c
SourceTree
SourceTree 是 Atlassian 公司出品的一款优秀的 Git 图形化客户端。如果你发现命令行无法满足你的要求,可以试试 SourceTree。
安装:
brew cask install sourcetree
用 brew-cask 安装会自动增加命令行工具stree
到$PATH
里。在命令行中输入stree
可以快速用 SourceTree 打开当前 Git 仓库。详细用法请参见stree --help
。
CheatSheet
CheatSheet 能够显示当前程序的快捷键列表,默认的快捷键是长按⌘
。
安装:
brew cask install cheatsheet
Alfred
Mac 用户不用鼠标键盘的必备神器,配合大量 Workflows,习惯之后可以大大减少操作时间。
上手简单,调教成本在后期自定义 Workflows,不过有大量雷锋使用者提供的现成扩展,访问这里挑选喜欢的,并可以极其简单地根据自己的需要修改。
安装:
brew cask install alfred
快捷键
快捷键 | 描述 |
---|---|
Command-B | 以粗体显示所选文本,或者打开或关闭粗体显示功能。 |
Command-I | 以斜体显示所选文本,或者打开或关闭斜体显示功能。 |
Command-U | 对所选文本加下划线,或者打开或关闭加下划线功能。 |
Command-T | 显示或隐藏“字体”窗口. |
Command-D | 从“打开”对话框或“存储”对话框中选择“桌面”文件夹。 |
Control-Command-D | 显示或隐藏所选字词的定义。 |
Shift-Command-冒号 (:) | 显示“拼写和语法”窗口。 |
Command-分号 (;) | 查找文稿中拼写错误的字词。 |
Option-Delete | 删除插入点左边的字词。 |
Control-H | 删除插入点左边的字符。也可以使用 Delete 键。 |
Control-D | 删除插入点右边的字符。也可以使用 Fn-Delete。 |
Fn-Delete | 在没有向前删除 键的键盘上向前删除。也可以使用 Control-D。 |
Control-K | 删除插入点与行或段落末尾处之间的文本。 |
Command-Delete | 在包含“删除”或“不存储”按钮的对话框中选择“删除”或“不存储”。 |
Fn–上箭头 | 向上翻页:向上滚动一页。 |
Fn–下箭头 | 向下翻页:向下滚动一页。 |
Fn–左箭头 | 开头:滚动到文稿开头。 |
Fn–右箭头 | 结尾:滚动到文稿末尾。 |
Command–上箭头 | 将插入点移至文稿开头。 |
Command–下箭头 | 将插入点移至文稿末尾。 |
Command–左箭头 | 将插入点移至当前行的行首。 |
Command–右箭头 | 将插入点移至当前行的行尾。 |
Option–左箭头 | 将插入点移至上一字词的词首。 |
Option–右箭头 | 将插入点移至下一字词的词尾。 |
Shift–Command–上箭头 | 选中插入点与文稿开头之间的文本。 |
Shift–Command–下箭头 | 选中插入点与文稿末尾之间的文本。 |
Shift–Command–左箭头 | 选中插入点与当前行行首之间的文本。 |
Shift–Command–右箭头 | 选中插入点与当前行行尾之间的文本。 |
Shift–上箭头 | 将文本选择范围扩展到上一行相同水平位置的最近字符处。 |
Shift–下箭头 | 将文本选择范围扩展到下一行相同水平位置的最近字符处。 |
Shift–左箭头 | 将文本选择范围向左扩展一个字符。 |
Shift–右箭头 | 将文本选择范围向右扩展一个字符。 |
Option–Shift–上箭头 | 将文本选择范围扩展到当前段落的段首,再按一次则扩展到下一段落的段首。 |
Option–Shift–下箭头 | 将文本选择范围扩展到当前段落的段尾,再按一次则扩展到下一段落的段尾。 |
Option–Shift–左箭头 | 将文本选择范围扩展到当前字词的词首,再按一次则扩展到后一字词的词首。 |
Option–Shift–右箭头 | 将文本选择范围扩展到当前字词的词尾,再按一次则扩展到后一字词的词尾。 |
Control-A | 移至行或段落的开头。 |
Control-E | 移至行或段落的末尾。 |
Control-F | 向前移动一个字符。 |
Control-B | 向后移动一个字符。 |
Control-L | 将光标或所选内容置于可见区域中央。 |
Control-P | 上移一行。 |
Control-N | 下移一行。 |
Control-O | 在插入点后插入一行。 |
Control-T | 将插入点后面的字符与插入点前面的字符交换。 |
Command–左花括号 ({) | 左对齐。 |
Command–右花括号 (}) | 右对齐。 |
Shift–Command–竖线 (|) | 居中对齐。 |
Option-Command-F | 前往搜索栏。 |
Option-Command-T | 显示或隐藏应用中的工具栏。 |
Option-Command-C | 拷贝样式:将所选项的格式设置拷贝到剪贴板。 |
Option-Command-V | 粘贴样式:将拷贝的样式应用到所选项。 |
Option-Shift-Command-V | 粘贴并匹配样式:将周围内容的样式应用到粘贴在该内容中的项目。 |
Option-Command-I | 显示或隐藏检查器窗口。 |
Shift-Command-P | 页面设置:显示用于选择文稿设置的窗口。 |
Shift-Command-S | 显示“存储为”对话框或复制当前文稿。 |
Shift–Command– 减号 (-) |
缩小所选项。 |
Shift–Command– 加号 (+) |
放大所选项。Command–等号 (=) 可执行相同的功能。 |
Shift–Command– 问号 (?) |
打开“帮助”菜单。 |
参考资料