如何在已打开的 Emacs 中从 bash 命令行打开文件,而不是在新实例中打开?当我输入
$ emacs file.txt
它会打开一个新的 Emacs 实例,而不是在现有的 Emacs 实例中打开文件。Mac OS X 10.6.8。和
GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0, NS apple-appkit-1038.36)
2012-02-27 于 beta.macosforge.org 上发布
答案1
您正在寻找的是 emacs 服务器模式。将此行添加到您的 .emacs 文件中:
(server-start)
然后,使用 emacsclient 打开文件:
emacsclient foobar.txt
看一下这页面以了解更多信息。
为了避免必须手动启动 emacs 或将其设置为自动启动,您可以编写一个小函数,尝试连接到正在运行的服务器(通过运行emacsclient
),如果没有,emacs
则运行。将其添加到您的 shell 的配置文件中(例如~/.bashrc
):
emacs(){
emacsclient "$@" 2>/dev/null || /usr/bin/emacs "$@"
}
现在,只需运行emacs file
即可启动服务器或连接到现有实例。
答案2
恐怕我不记得在哪里找到了以下解决方案。抱歉。但是,由于它对我来说效果最佳,所以我将其添加到此处。
确保您.emacs
启动了 emacs 服务器。
(server-start)
接下来,定义.bashrc
函数:
function run_emacs
{
/usr/bin/emacsclient "$1" &
}
并设置环境变量:
export EDITOR=emacsclient
export ALTERNATE_EDITOR=emacs
最后,定义别名:
alias emacs='run_emacs'