Mac OS X 中 Emacs.app 的命令行启动以及调试模式的开启

Easior Lars posted @ 2014年3月14日 08:18 in MacOSX with tags emacs MacOSX , 8280 阅读

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。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter