2010-02-16 48 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,和嘗試連接到它。