![在 Mac 上,如何从命令行打开文件并将其显示在现有的 Emacs 窗口中?](https://linux22.com/image/1312516/%E5%9C%A8%20Mac%20%E4%B8%8A%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6%E5%B9%B6%E5%B0%86%E5%85%B6%E6%98%BE%E7%A4%BA%E5%9C%A8%E7%8E%B0%E6%9C%89%E7%9A%84%20Emacs%20%E7%AA%97%E5%8F%A3%E4%B8%AD%EF%BC%9F.png)
如何从命令行打开文件并使其显示在现有框架中的现有窗口之一中,否则显示在新框架中的新窗口中?默认行为是在新框架中打开。我正在使用
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 也会启动服务器。