Bash 如果服务器已经在运行,如何从命令行启动emacs,但使用EmacClient?

Bash 如果服务器已经在运行,如何从命令行启动emacs,但使用EmacClient?,bash,emacs,emacsclient,Bash,Emacs,Emacsclient,我在Ubuntu下使用emacs 如果我想编辑a.txt,那么我要么单击emacs图标,要么使用 $ emacs --geometry 10x10 --fullscreen --no-splash ~/a.txt & 来自bash。My.emacs文件启动emacs服务器 如果我想从命令行编辑另一个文件,我使用 $ emacsclient -n ~/b.txt 将文件加载到现有的emacs中 但我总是弄错,所有的麻烦都以各种方式发生了 如何生成bash命令“e”,以检查emacs服

我在Ubuntu下使用emacs

如果我想编辑a.txt,那么我要么单击emacs图标,要么使用

$ emacs  --geometry 10x10 --fullscreen --no-splash ~/a.txt &
来自bash。My.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服务器套接字是否存在,我想要的是什么。

您发现
EmacClient-a
存在哪些问题?