创建以后台开头的emacs别名?

时间:2010-02-16 23:14:05

标签: linux bash unix emacs emacs23

我在bash中有一个别名,如果emacs守护程序已在运行,则运行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')。

非常感谢!

2 个答案:

答案 0 :(得分: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/bash后使用disownesac进程(使用$!获取pid。)

答案 1 :(得分:2)

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

  

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