5

如果 emacs 守护进程已经在运行,我在 bash 中有一个别名运行 emacsclient,否则启动 emacs。但是,如果启动了新的 emacs 实例,我可以让它在后台运行,以便我仍然可以使用该终端(或关闭它)吗?在我的 bash 个人资料中,我有

alias ec="/usr/bin/emacsclient.emacs-snapshot -n -c -a /usr/bin/emacs-snapshot"

我可能在终端并输入

$ ec newfile

如果 emacs 守护程序尚未运行,是否可以创建一个别名来使上面的行相当于

$ emacs newfile &

代替

$ emacs newfile

(我还应该提到我使用的是 Linux Ubuntu,并且 emacs-snapshot 被分配给别名“emacs”)。

非常感谢!

4

2 回答 2

5

与其直接调用,不如编写一个在后台调用然后返回/usr/bin/emacs-snapshot的脚本:/usr/bin/emacs-snapshot

#!/bin/sh
case $# in
  0) /usr/bin/emacs-snapshot &
  *) /usr/bin/emacs-snapshot "$@" &
esac

然后你以普通的方式调用脚本;它将启动一个后台 emacs 进程并立即返回。

如果你想变得花哨,你可以使用/bin/bashdisown之后的过程esac(用 获取 pid $!)。

于 2010-02-17T03:58:31.943 回答
3

虽然这不是您问题的直接答案,但这是“启动 emacs 守护程序或以其他方式运行 emacsclient”的更优雅的方式。创建以下别名:alias emacs=emacsclient -c -a "". 截至man emacsclient

-a, --alternate-editor=EDITOR ... 如果 EDITOR 的值为空字符串,运行 `emacs --daemon' 以守护模式启动 Emacs,并尝试连接到它。

于 2012-05-24T22:01:30.153 回答