在OS X 10.6上使用emacs

11

我是一名新的iMac用户,对于PC上的Linux有着丰富的经验。我将最新版本的emacs下载到了Applications文件夹中,现在想要通过命令行调用emacs。然而,emacs的默认路径是/usr/bin/emacs。那么如何最佳实践地将新的emacs添加到路径中呢?我想创建一个~/bin目录和一个指向新emacs的链接,并将~/bin添加到我的路径开头。这就是我们在Linux PC的软件开发环境中的做法。


1
顺便说一句,不确定你是否知道,在几乎任何标准的Cocoa应用程序文本框中,您都可以使用emacs快捷键的子集,并且您可以通过定义其他标准键绑定来进一步扩展它们 - http://www.gnufoo.org/macosx/ - JulesLt
5个回答

10

最好的方法是使用Homebrew并使用它。

brew install emacs --cocoa

那么您现在拥有一个易于更新的Emacs安装程序。Cocoa将确保在启动Emacs之前,您的Mac快捷键可以正常工作。将二进制文件设置为守护进程在启动时运行(因为它启动得不太快),例如:

 /usr/local/Cellar/emacs/23.2/Emacs.app/Contents/MacOS/Emacs --daemon

创建一个脚本,使用emacsclient命令并将其保存到/bin/emacs文件中(不要忘记将其设置为可执行):

#!/bin/bash
exec /Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n -c "$@"

当你在Bash终端上输入"emacs something.txt"时,已经在运行的Emacs守护进程会立即打开该文件。如果守护进程未在运行,则可以扩展此功能以打开Emacs!

我在最新的Emacs 23.2版本上进行了测试,一些功能可能不适用于早期版本。


1
你真的不应该把随意的东西扔进 /bin 目录 -- 正确的做法是要么将其放在路径较早的位置,要么为这些东西创建别名。我使用从地窖中取出的 Emacs.app 作为一个普通的可双击应用程序。 - Dustin
但是,如果您使用bash使用emacs编辑随机文件,则会打开另一个Emacs。我的emacs脚本实际上在我的~/bin中。有时,如果它依赖于实际的bin文件,则必须手动将bin设置为on:make EMACS = <path to actual emacs bin>。99%的时间您不会注意到差异。 - Henry Mazza
2
我个人认为,当你可以从http://emacsformacosx.com/builds下载预构建的.dmg文件并像其他OS X应用程序一样将其拖入应用程序中时,Homebrew不是安装Cocoa Emacs最简单的方法。 - Kurt Harriger
如果(仅当)adamv将他的头拔出来并允许emacs在编译为GUI时默认为GUI(就像在其他平台上一样),Homebrew将是安装emacs的正确方式。 - dmckee --- ex-moderator kitten

9
假设您仍然在Linux环境中,把这个文件放在/usr/local/bin是最常见的做法(并将其添加到您的路径中)。如果您决定采用这种方式,我建议您坚持这样做。但这是我的Emacs设置方法:
  1. 我从emacsforosx.com下载了最新的普通/原版Emacs。
  2. 我创建了一个emacs别名,用于启动基于终端的Emacs版本,例如:

    alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs -nw'

  3. 如果您想从终端启动GUI版本的Emacs,您只需键入以下命令(据我所知,这是Mac的特殊用法,因此您可能不会从Linux中知道):

    $ open -a Emacs


6

有关OS X上的emacs的大量信息可在emacs wiki中找到。

~/bin/usr/local/bin都可以正常工作,操作PATH也可以。

假设您正在使用Emacs.app,则最简单的方法是使用open -a /Applications/Emacs.app“$@”open是在Finder中双击某个东西的命令行等效项。 将其放入shell脚本中,将其放入PATH中即可。

通过MacPorts安装emacs-app可能是获取和维护Cocoa emacs的最简单方法。

你可以考虑使用Aquamacs,它是OS X上Emacs的进一步改进。Aquamacs的Emacs维基页面非常有帮助。它还提供了一个选项,可以将Aquamacs脚本添加到你的PATH中,以便在Aquamacs GUI中打开文件。

1
我在我的~/bin目录下创建了一个名为emacs的shell脚本,其内容如下:
open -a Emacs "$@"

显然,~/bin需要在我设置的~/.profile中的PATH中位于/usr/bin之前,以便它可以遮盖预安装的emacs二进制文件。

我还通过ln -s /Applications/Emacs.app/Contents/MacOS/bin/emacsclient ~/bin/emacsclient创建了一个符号链接,以便这也可以遮盖预安装的emacsclient二进制文件。

为了方便起见,我创建了一个别名ec='emacsclient -a emacs -n'并在我的emacs初始化脚本中包含(server-start)。这使我能够使用ec filename从命令行打开文件,无论emacs是否已经运行。

另一个提示:当您通过应用程序或打开启动emacs时,emacs不会继承与终端环境中相同的路径,因此我发现非常有用的一件事是在设置路径后在我的.profile中运行以下命令来更改继承cocoa应用程序的PATH:

   defaults write ${HOME}/.MacOSX/environment PATH "$PATH"

0

可以这样做。如果这是一个本地的 Mac 应用程序,那么二进制文件实际上位于应用程序目录下(而不是二进制文件的大写形式):.../Emacs.app/Contents/MacOS/Emacs

由于您来自 Linux,您可能会对MacPorts感兴趣。这是一个从 Linux 移植过来的大型软件包集合。它允许从命令行安装和升级软件包,进行依赖关系管理等等。它包括一个本地版本的 Emacs,可以从命令行调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接