如何在已打开的 Emacs 而不是新实例中从 bash 命令行打开文件?

如何在已打开的 Emacs 而不是新实例中从 bash 命令行打开文件?

如何在已打开的 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'

相关内容