LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1035|回复: 0

Emacs server

[复制链接]
发表于 2003-9-1 21:26:40 | 显示全部楼层 |阅读模式
什么是 emacs server?

让我们先看看这个场景:

你喜欢 emacs,想在*任何*需要使用编辑器的情况下都用她。比如:mutt。当然,只要将环境变量 EDITOR=emacs 就可以了。看得出来,你是一个 emacs fans,你受得了 emacs 蜗牛般的起动速度。什么?你是 diehard emacs user,要 emacs,也要速度。好!让我们看看这个快成为操作系统,就差一个像样的文本编辑器的编辑器是怎样满足这个需求的。

emacs 中有一个 server 方式,就是系统当前以 server 方式只运行一个 emacs 实例,接受 emacsclient 发出的 visit file,并且在新的 buffer 中打开这个文件。这样不必每次都执行 emacs,忍受起动的龟速,因为 emacs 已经在内存中了,激活 emacs 窗口是瞬间的事儿。

emacs server 方式使用非常简单,在 ~/.emacs 中加上:

(server-start)

执行 emacs,起动一个 emacs server。

以前要编辑文件用 emacs,现在改用 emacsclient。在命令行上执行 emacsclient ~/.emacs,然后切换到 emacs 窗口看看。~/.emacs 已经在新的 buffer 中打开了。

编辑完后,按 C-x # ,完成本次编辑,emacs 会向 emacsclient 发送 finish ,结束本次任务,关闭当前 buffer。记住,退出时应该用 C-x # ,不能用 C-x C-c。否则,要重新起动 emacs,对于 client/server 方式,这并不难理解。

你想要在其它程序中这样用,设置环境变量 EDITOR=emacsclient 就可以了。有些程序用其它环境变量,也应该设置其对应对环境变量。

这很好,但你发现每次 emacsclient 执行后,都要切换窗口非常麻烦。可以在 ~/.emacs 中加上 server-visit-hook 和 server-done-hook 。详细内容见后。

emacs server 方式的优点:

    * 在允许调用外部编辑器的环境中使用你喜欢的 emacs。
    * 起动速度快。所谓“迅雷不及掩耳盗铃之势”,说的就是这个。
    * 做个快乐的 diehard emacs user,舒服地生活在 emacs 中

后记

我是在解决 moinmoin 中 ExternalEdit plugin 调用外部编辑器时找到这个方法的。在 GNU Emacs Manual 中对 emacs server 有详细描述。同时,在邮件列表中找到切换窗口的方法。

一点感想,使用 emacs 的过程,也是不断学习、不断认识的过程。开始不理解 emacs 怎么会有这么多古怪的功能,随着逐步熟悉,发现他们绝不是某个家伙拍脑袋想出来的。他们来自于需求,你的、我的、大家的。而且,有个家伙早帮你实现了你的需求。从这点看,emacs 做为一个编辑器却有数十兆的身材就不足为怪了。这绝不是你斥巨资,购得某些商业公司臃肿无比但有一大堆垃圾功能所谓字处理器能比的。

嗯,看看 linuxforum 上的 pengchengzou 是怎样生活在 emacs 中的。

  1. i love emacs, and this is my item in /etc/passwd:
  2. zoupch:x:521:500::/home/zoupch:/usr/bin/emacs
复制代码


在 ~/.emacs 中加上:

  1. (server-start)

  2. ;; 有 emacsclient 请求时,自动激活 emacs 窗口
  3. (add-hook 'server-visit-hook
  4.             '(lambda ()
  5.               (setq server-window (make-frame))))

  6. ;; 退出 emacs 时,自动关闭当前 buffer
  7. (add-hook 'server-done-hook
  8.             '(lambda ()
  9.                (delete-frame server-window)
  10.                (setq server-window nil)))
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表