Mar 14

Mac OS X 中自带 emacs 与 vi 等编辑器,不过这些编辑器只是命令行模式的。换而言之,只能在打开 Terminal.app 等终端应用之后,输入命令行才能用。例如开启 emacs,在由 Terminal.app 提供终端中输入

$ emacs

启动的 Emacs 也只是以文本模式运行在终端环境中。但是对于习惯图形化操作的用户来说,必然会从例如 http://emacsformacosx.com 等网站下载安装 Emacs for Mac OS X 之类的图形化 Emacs,这些应用一般会提供一个名为 Emacs.app 的程序文件,只需要将该文件拖入 /Applications 文件夹即可完成安装。打开它们的办法如同打开 Terminal.app 一样,只需在 Launchpad 中点击 Emacs.app 对应的图标。 那么如何在命令行中开启图形化的 Emacs 呢?这就需要用到 Mac OS X 提供的命令行 open 了。更准确地说,若要在终端打开由 Emacs.app 提供的图形化 Emacs,可执行

$ open -a /Applications/Emacs.app

它本质上与

$ /Applications/Emacs.app/Contents/MacOS/Emacs

是一样的。此种方式打开的 Emacs 与在 Launchpad 中点击应用图标别无二致。另外,命令行 open 还能传递一些参数到 Emacs.app,例如很多时候,Emacs 的配置文件有问题,需要调试,通常需要将参数 --debug-init 传给 Emacs,若直接在终端执行

$ emacs --debug-init

恐怕启动的并非是我们需要的 Emacs.app。为此,可执行

$ open -a /Applications/Emacs.app --args --debug-init

当然,若不嫌弃繁复的命令,也可

$ /Applications/Emacs.app/Contents/MacOS/Emacs --debug-init

其实,open 还有更多的功能,例如,还想多打开一个图形化 Emacs 实例,可执行

$ open -n /Applications/Emacs.app

为了免去命令行中每次输入那么多参数才能启动图形化 Emacs 的麻烦,建立 alias 是一个方法,例如

$ echo alias emacs='open -a /Applications/Emacs.app "$@"' >> ~/.bashrc

但是缺点也是显而易见的。下面介绍另一种图形化 Emacs 的打开方法,能够弥补 alias 的不足。先在家目录下建一个可执行文件目录,例如 ~/.local/bin,然后做一个 Bash 封装脚本:

$ mkdir -p ~/.local/bin
$ echo "#!/bin/bash
exec /Applications/Emacs.app/Contents/MacOS/Emacs $*" > ~/.local/bin/emacs
$ echo "#!/bin/bash
exec /Applications/Emacs.app/Contents/MacOS/bin/emacsclient --alternative-editor='' $*" > ~/.local/bin/emacsclient
$ chmod +x ~/.local/bin/emacs{,client}

由于启动的是图形化程序,需要将 ~/.local/bin 路径加至 PATH 变量以及 ~/.MacOSX/enviroment.plist,例如

$ cat >> ~/.bash_profile << EOF
export PATH=~/.local/bin:$PATH

## Enviroment Variables for GUI Apps
if [ ! -e $HOME/.MacOSX/environment.plist ]; then
	if [ ! -d $HOME/.MacOSX ]; then
		mkdir -p $HOME/.MacOSX
	fi
	touch $HOME/.MacOSX/environment.plist
fi
defaults write $HOME/.MacOSX/environment.plist PATH "$PATH"
EOF

这样便实现了 Emacs.app 替代 Mac OS X 自带命令行 emacs,也能在其他应用中直接调用 Emacs.app。

Mar 1

如果您喜欢对邮件使用GPG加密或者签名的话,那么GPGMail就是Apple Mail上实现该功能的插件。目前官网上只有针对Mac OS 10.7及以下的版本GPGMail。对于ML上的用户来说,这未尝不是遗憾。不过,最新消息是官方正在测试新版本,我特来给大家提供一个尝鲜的办法。

首先,要通过链接https://nightly.gpgtools.org/GPGTools_Installer-108n.dmg下载并安装GPGTools随后打开它并根据Apple Mail的帐号生成自己需要的GPG密匙。接着,利用Xcode编译最新的GPGMail源码,做法如下。打开终端输入:

$ cd
$ git clone --recursive https://github.com/GPGTools/GPGMail -b experimental

GPGMail的最新源码已位于~/GPGMail目录。下面就是编译它:

$ cd GPGMail
$ make

或者打开Xcode进行编译。如果一切正常的话,会告知编译成功。GPGMail插件就在~/GPGMail/build/Release目录,只要将它复制到~/Library/Mail/Bundles目录,执行

$ cd ~/GPGMail/build/Release
$ cp -r GPGMail.bundle ~/Library/Mail/Bundles

或者鼠标操作均可以。

好啦,现在重启Apple Mail试试吧。
Jan 9

Mac OS X的使用过程中,经常会发生右键快捷菜单条目重复,甚至包含一些已经不存在的软件版本。下图便是一例:

右键菜单中包含了两个版本的TextMate,这让人特别烦恼。究其原因,可能是MacOSX在升级软件过程中,没有更新快捷菜单的数据库。为了解决这个问题,仅需在终端执行

$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

运行结束之后,我们可以从下图中看到右键快捷菜单已经正常:

以上操作在Mac OS X 10.8中能够操作成功。