如何从命令行打开文件并使其显示在现有框架中的现有窗口之一中,否则显示在新框架中的新窗口中?默认行为是在新框架中打开。我正在使用
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
恰恰相反:它重新使用框架。从emacsclient
gnu.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"
我会检查以确保您使用的是emacsclient
emacs 附带的,并且您没有无意中发送-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 也会启动服务器。