我在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')。
非常感谢!
答案 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
后使用disown
和esac
进程(使用$!
获取pid。)
答案 1 :(得分:2)
虽然这不是您问题的直接答案,但这是“启动emacs deamon或运行emacsclient”的更优雅方式。创建以下别名:alias emacs=emacsclient -c -a ""
。截至man emacsclient
:
-a, - alternate-editor = EDITOR ... 如果EDITOR的值是空字符串,请运行`emacs --daemon'以守护进程模式启动Emacs,并尝试连接到它。