在 Mac 上,如何从命令行打开文件并将其显示在现有的 Emacs 窗口中?

在 Mac 上,如何从命令行打开文件并将其显示在现有的 Emacs 窗口中?

如何从命令行打开文件并使其显示在现有框架中的现有窗口之一中,否则显示在新框架中的新窗口中?默认行为是在新框架中打开。我正在使用

2012-01-29 的 GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0) 位于 beta.macosforge.org

编辑1

我没有足够注意我的别名定义。我正在使用

alias emacs=open -a /Applications/Macports/Emacs.app

在我的 中.bashrc。使用此设置,如果我之前打开了一个现有的 Emacs 框架,当从命令行 ( $ emacs foobar.txt) 运行新的 emacs 时,它会打开一个新框架,甚至为其加载 .emacs,然后在新框架的一个窗口中显示该文件。(我的.emacs设置会自动将框架拆分为两个窗口。)

答案1

您无需从命令行准确指定如何打开文件,但默认行为实际上emacsclient恰恰相反:它重新使用框架。从emacsclientgnu.org 上的文档,该-c选项用于获取您似乎默认拥有的行为。

-c创建新的图形框架,而不是使用现有的 Emacs 框架。Emacs 23 可以创建图形框架,即使它是在纯文本终端中启动的,只要它能够连接到图形显示器即可。如果没有可用的图形显示,Emacs 将创建一个新的纯文本终端框架(请参阅框架)。如果在提供“-c”选项时省略文件名参数,则新框架将显示“划痕'缓冲区(参见缓冲区)。

我可以确认它在我的系统上就是这样工作的,只是落后了几个转速:GNU Emacs 23.2.1 (x86_64-apple-darwin, NS apple-appkit-1038.29) of 2010-05-08 on black.local"

我会检查以确保您使用的是emacsclientemacs 附带的,并且您没有无意中发送-c

答案2

我用的是这个:

emacs() {
/Applications/MacPorts/Emacs.app/Contents/MacOS/bin/emacsclient --alternate-editor=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs $1 &
}

它使用 emacsclient 打开您指定的文件 - 如果它找不到现有的 Emacs 服务器,它会打开一个新的。

在 .emacs 中,执行

(server-start) 

这样启动 emacs 也会启动服务器。

相关内容