创建在后台启动的 emacs 别名?

发布于 2024-08-21 09:20:19 字数 569 浏览 9 评论 0原文

我在 bash 中有一个别名,如果 emacs 守护进程已经在运行,则该别名运行 emacsclient,否则启动 emacs。但是,如果启动了新的 emacs 实例,我可以让它在后台运行,以便我仍然可以使用该终端(或关闭它)吗?在我的 bash 配置文件中,

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

我可能在终端并输入

$ ec newfile

If emacs daemon is not already running, is there a alias I can create 使上面的行相当于

$ emacs newfile &

而不是

$ emacs newfile

(我还应该提到我是使用 Linux Ubuntu 并将 emacs-snapshot 分配给别名“emacs”)。

非常感谢!

I have an alias in bash that runs emacsclient if emacs daemon is already running and start emacs otherwise. However, in the event that a fresh instance of emacs is fired up, can I make it run in the background so I can still use that terminal (or close it)? In my bash profile, I have

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

And I might be at the terminal and type

$ ec newfile

If emacs daemon is not already running, is there an alias I can create to make the line above do the equivalent of

$ emacs newfile &

instead of

$ emacs newfile

(I should also mention that I am using Linux Ubuntu and emacs-snapshot is assigned to the alias, 'emacs').

Thanks much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦纸 2024-08-28 09:20:19

不要直接调用 /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 并在 esac 之后 disown 进程(使用 $ 获取 pid !)。

Instead of calling /usr/bin/emacs-snapshot directly, write a script that calls /usr/bin/emacs-snapshot in the background and then returns:

#!/bin/sh
case $# in
  0) /usr/bin/emacs-snapshot &
  *) /usr/bin/emacs-snapshot "$@" &
esac

Then you call the script in the ordinary way; it will launch a background emacs process and return immediately.

If you want to get fancy you can use /bin/bash and disown the process after the esac (get the pid with $!).

意中人 2024-08-28 09:20:19

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

-a, --alternate-editor=编辑器
...
如果 EDITOR 的值为空字符串,则运行 `emacs --daemon' 以守护进程模式启动 Emacs,并尝试连接到它。

While this is not the direct answer to your question, this is the more elegant way to "start emacs deamon or run emacsclient otherwise". Create the following alias: alias emacs=emacsclient -c -a "". As of man emacsclient:

-a, --alternate-editor=EDITOR
...
If the value of EDITOR is the empty string, run `emacs --daemon' to start Emacs in daemon mode, and try to connect to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文