Hacking Limbo

Reading / Coding / Hacking

New to Mac

6 月底拿到了公司配的 MacBook Pro,2011 Early 款的,虽然配置跟新出的 rMBP 完全没法比,但相对于我原先的 ASUS 笔记本来说已经是很大的提升了。这里说说我作为一个使用不到两周的 Mac 新手的经验和体会。

包管理工具

Linux 的发行版大多都自带一个包管理工具,日常使用的软件都可以通过它来安装,而 Mac OS X 默认是没有的,必须自己选择和安装。我总共试用了 Gentoo Prefix, MacPorts 和 Homebrew 这三个,最后选择的是 Homebrew。

我是 Gentoo 党,本来还想着在这部 MBP 上装 Gentoo Linux,但考虑到这是工作机不方便折腾就作罢了,听闻 Gentoo Prefix 还不错,就花了一天的时间把它配置好(虽然 有官方文档但还是会有一些小问题需要自己 Google)(其过程几乎是一次 LFS),发现它根本没有针对 Mac OS X 作任何优化或调整,很多包都用不了(比如 htop),最后很不情愿地把它删了。

接着试用了 MacPorts,但安装完没多久就放弃了,因为它跟 Gentoo Prefix 一样,整个工具链都要从头开始编译,比如其中一个包依赖 Python,就要自己编译一个 Python,而不是利用系统现有的,没觉得这样做有什么优势。

Homebrew 算是一个简化版的 ports 系统,用 Git 来管理软件包的 formula(类似 Gentoo Portage 中的 ebuild 文件),安装软件的时候会尽量利用系统已有的工具,虽然可用的包相对于 MacPorts 要少很多,但估计也够用了。等碰到 Homebrew 解决不了的问题时再考虑其他的方案吧。

BTW:Mac OS X 的开发工具链(gcc 之类的东西)是由 Xcode 里的 Command Line Tools 提供的,如果嫌 Xcode 体积太庞大可以下载单独的安装包,不过我建议还是安装整个 Xcode 比较好,因为不确定那些依赖 Cocoa 的程序没有 Xcode 能否正常编译,而且 Xcode 还自带了一些比较好用的工具(比如 FileMerge)。

开发环境

选好包管理工具之后剩下的环境搭建比较简单,浏览器用 Google Chrome,终端模拟器用 iTerm2,编辑器用 MacVim,都是一些“大路货”,但也有一些小工具需要自己慢慢发掘,这里推荐几个我觉得很有用的:

  • SizeUp: 窗口管理工具,提供了一些简易的窗口平铺选项,以及很关键的窗口最大化功能——大多数 Linux 用户都会很惊讶地发现在 Mac OS X 系统里面,窗口左上角那个绿色按钮并不是最大化按钮,而系统没有提供最大化的功能……(比较可惜的是在 App Store 买不到,只好厚脸皮地无限期试用着)

  • Dash: 各种开发文档的离线包,虽然做工不是太精细(估计是直接在官网抓下来然后打包的),但也省了自己一个个用 wget 抓的功夫。

  • ClipMenu: 剪贴板管理工具,这个跟我在 Linux 里用的 Parcellite 比较接近。

  • Alfred: 类似 Gnome Do 的东西(好吧它们都是源自 Mac OS X 里的 QuickSilver),免费版功能比较简单,据说装了 Powerpack 之后会很强大,但是在 App Store 里买不到……

  • DragonDrop: 用 Trackpad 长距离拖动东西比较考验用户的技术,而 DragonDrop 提供了“中转站”的功能,可以把要拖动的东西放进去,到目的地再拖出来。App Store 有售。

  • Scroll Reverser: 自 Lion 开始 Trackpad 的滚动方向是与触摸屏的“自然方向”一致的,但是鼠标滚轮和 Trackpad 的手感完全不同,还是保持“传统方向”比较顺手,而这个工具就可以让你分开设置 Trackpad 和鼠标滚轮的滚动方向。

  • Tunnelblick: OpenVPN 的图形客户端。不知道为什么通过 Homebrew 安装的 OpenVPN 命令行版无法正常连接,Google 了半天也没找到解决方法——大家都说“用 Tunnelblick 吧”,所以别折腾了,用 Tunnelblick 吧。

  • TotalFinder: Finder 强化工具,提供多标签视图、双栏视图和文件剪切等功能。是的,Finder 默认没有文件剪切选项。

一些注意事项

  • 通过 brew install macvim 安装 MacVim 的时候,有可能会在编译过程中卡住不动,据说是因为找不到 Xcode 的位置,所以要先运行 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer 再重新安装。

  • Mac OS X 自带的命令行工具都是 BSD 系的,不仅很多参数不支持,其参数的风格也跟 Linux 里的 GNU 系工具不太一样,比如 rm 命令的 -rf 必须写在最前面(rm -rf xxx 可以,rm xxx -rf 就报错),又比如 ls 命令没有 --auto 选项。如果不介意的话可以慢慢适应,但也有比较暴力的解决方法,就是先 brew install coreutils 然后按照 Homebrew 的提示用 GNU Coreutils 替换掉系统自带的工具。

一些吐槽和赞美

Mac OS X 图形系统的整合程度比较高,虽然我不清楚具体的架构,但估计跟 Windows 的做法差不多,这就意味着选择了 Mac OS X 就必须适应(或者说“忍受”)它自带的桌面环境,而这对于一个 Awesome WM 的死忠来说并不是一个好消息,且不说 SizeUp 之类的工具提供的窗口平铺功能太弱(而且还是收费软件),像“将窗口放置到指定的 Desktop”这种简单的操作都要用鼠标拖动才能完成,简直是不可想象的。另外据说 Mac OS X 对多显示器的支持也很糟糕,搞得我都不怎么想买外置显示器了……

不过呢,赞美还是有的:

  1. MBP 的休眠功能非常靠谱,出门时只需要合上屏幕就可以带走,而拿出来打开屏幕又立即可以使用,不像在 Linux 里面休眠和唤起都要半天才有反应,还经常在休眠过程中死机(有可能是笔记本硬件的问题)。

  2. Mac OS X 里的好用的软件比 Linux 多很多,常用的中文输入法、QQ、Evernote 等等都有 Mac 版。

  3. Cocoa 原生程序的文本编辑框都支持 Emacs 按键绑定(C-a / C-e 移动到行首行尾,C-k / C-y 剪切粘贴文本,C-p / C-n 移动到上一行下一行,等等),比 PC 键盘的 Home / End 按键高效很多。