我在Ubuntu下使用emacs
如果要编辑a.txt,请单击emacs图标或使用

$ emacs  --geometry 10x10 --fullscreen --no-splash ~/a.txt &

从巴什。我的.emacs文件启动emacs服务器。
如果我想从命令行编辑另一个文件,我使用
$ emacsclient -n ~/b.txt

将文件加载到现有的Emacs中。
但我总是弄错了,所有的地狱都以不同的方式爆发。
如何生成bash命令'e',检查emacs服务器是否已在运行,并执行适当的命令?
试图使用emacsclient -a开关总是会产生不受欢迎和不确定的行为。
如果它在控制台上运行时也能“做正确的事情”,那就额外加分。

最佳答案

到目前为止,.bashrc中的函数定义似乎是一个完美的解决方案:

function e #open emacs in background and disown it, or if already running use emacsclient
{
 echo "emacs function backgrounds and disowns emacs, or calls client if server already running; see .bashrc";
 local FLUFFY="$@";
 local SERVERSOCKET=/tmp/emacs${UID}/server ;
 echo "trying to open: " $FLUFFY
 echo " checking: " $SERVERSOCKET "for emacs server " ;
 # test for existence of emacs server socket
 if [ -e $SERVERSOCKET ]; then
     echo "using emacsclient"
     emacsclient -n $FLUFFY;
 else
     echo "starting emacs: make tea..."
     emacs  --geometry 10x10 --fullscreen --no-splash $FLUFFY & disown ;
 fi;
}

从这个咒语中衍生出来的:
FLUFFY=~/b.txt ; if [ -e /tmp/emacs1000/server ]; then emacsclient -n $FLUFFY; else emacs  --geometry 10x10 --fullscreen --no-splash $FLUFFY & fi;

它通过检查用户1000的Emacs服务器套接字的存在来实现我想要的。

关于bash - 如何从命令行启动emacs,但如果服务器已在运行,则如何使用emacsclient?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24910937/

10-09 07:41
查看更多