如何在 Emacs 中启动 Server 模式

1. Intro

快速启动 emacs 是一个问题:

  • 个人体验
  • 临时编辑(git-commit)

解决方法:emacs 的 server 模式。

2. Setup

2.1. 方法一

  1. 按如下命令启动 emacs(server-name可以省略,默认为 “server”):
emacs --daemon[=server-name]
  1. 有编辑需求时,用 emacsclient 启动:
# 图形界面
emacsclient -s server -n -c
# 终端界面
emacsclient -s server -t

参数说明:-c 参数表示 gui 启动,-n 告诉程序不等待终端返回,跟 -c 参数结合使用;-s 选择 连接的服务器名,-t 表示在终端中启动。

2.1.1. 系统自启动

brew services start d12frosted/emacs-plus/emacs-plus@28

2.1.2. 打包成应用

  1. 打开 automator
  2. 选取 文档类型应用程序
  3. 找到:运行 shell 脚本
  4. 界面的 传递输入 按钮选为 作为自变量
  5. 输入启动 emacs-client 的 shell 命令:
/usr/local/bin/emacsclient -s server -n -c  "$@"

2.1.3. 遇到的问题

  • 在 kitty 终端中用 -t 参数执行会报找不到 terminfo 的错误,在命令前指定环境变量 TERM=xterm-256color 解决问题。
  • 由于 daemon 是在图形界面创建之前启动,可能会遇到一些界面跟配置不一致的问题。

2.2. 方法二

直接在一个 emacs 的实例中启动服务,该服务和这个实例共生共灭。

(unless (server-running-p)
  (server-start))
;; 或者
(use-package server
  :ensure nil
  :hook (after-init . server-mode))

3. Comment

用了一段时间的方法一,但不时地出现一些小问题,而且在不同的系统上配置方法都不一样, 所以现在主要使用第二种方法。简单,方便,一致。


Created with Emacs 29.4 (Org mode 9.6.15) by YangXue
Updated: 2025-01-15 Wed 04:00