2010-02-16 18 views
5

如果emacs守护程序已经在运行,并且在其他情况下启动emacs,那么在运行emacsclient的bash中有一个别名。但是,如果emacs的新实例被激活,我可以让它在后台运行,这样我仍然可以使用该终端(或关闭它)?在我的bash的个人资料,我有创建在后台启动的emacs别名?

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

而且我可能是在终端输入

$ ec newfile 

如果emacs的守护进程尚未运行,有一个别名,我可以创造,使上面的行做

$ emacs newfile & 

,而不是

$ emacs newfile 
012相当于

(我还应该提到,我正在使用Linux Ubuntu并将emacs-snapshot分配给别名'emacs')。

非常感谢!

回答

4

与其说/usr/bin/emacs-snapshot直接,编写调用后台/usr/bin/emacs-snapshot脚本,然后返回:

#!/bin/sh 
case $# in 
    0) /usr/bin/emacs-snapshot & 
    *) /usr/bin/emacs-snapshot "[email protected]" & 
esac 

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

如果你想看到你可以使用/bin/bashdisown后的过程esac(获得与$! pid)。

+1

为什么'case'?当$#是o时,只需使用'myscript'$ @“'将与'myscript'相同。 – dubiousjim

+1

@profjim:可能在bash中,而不是旧版本的'/ bin/sh'。 'case'保证了可移植性。在旧版本中,当$#'为0时,'myscript“$ @”'表现为'myscript“。'当你和我一样古老时,你会学会保留”bug兼容性“。 –

+0

有意思,谢谢! – dubiousjim

2

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

-a,--alternate编辑器= EDITOR ... 如果编辑器的值是空字符串,运行`--daemon” emacs的守护进程方式来启动Emacs,和尝试连接到它。