第11章  使用 Emacssgml-mode

  较新版本的 EmacsXEmacs (可通过 Ports 安装) 包含了一个非常实用的包 PSGML (可以通过 editors/psgml)。 当打开一个扩展名为 .sgml 文件的时候就能自动载入此模式, 或手工输入 M-x sgml-mode, 这是一个处理 SGML 文件, 元素和属性的主编辑模式。

  理解此模式所提供的一些命令能更容易的处理像使用手册这样的 SGML 文档。

C-c C-e

运行 sgml-insert-element。 你将会被提示在光标出插入元素的名称。 你可以使用 Tab 键补全元素名称。 仅会显示当前位置可用的元素。

元素的开始与结束标记会被插入。 如果还含有其他的元素也同样会被插入。

C-c =

运行 sgml-change-element-name。 把光标置于某个元素上并运行此命令。 你将被提示输入修改的新元素名称。 开始与结束标记都将被改成新的元素。

C-c C-r

运行 sgml-tag-region。 选择一部分文本 (将光标移到文本的开始, 按 C-space, 移动到文本的结束, 按 C-space) 然后运行此命令。 你将会被提示输入想要使用的元素名称。 这个元素将会被立即插入到所选区域的开头与结尾。

C-c -

运行 sgml-untag-element。 把光标移动到你想要删除的某个元素的开始或结束标记, 并运行此命令。 这个元素的开始与结尾标记将会被删除。

C-c C-q

运行 sgml-fill-element。 将递归填充 (即重新格式化) 当前元素的内容。 填充 明显影响内容的空白间隔, 比如 <programlisting> 元素, 所以请小心使用。

C-c C-a

运行 sgml-edit-attributes。 打开另一个包含有临近结束元素所有属性和值列表的缓冲区, 使用 Tab 查看不同的属性, C-k删除一个现有的值, 替换成新的值, C-c C-c 关闭这个缓冲区并返回主文档。

C-c C-v

运行 sgml-validate。 提示你保存当前的文档 (如需要的话) 并运行一个 SGML 验证程序。 验证程序的输出会被捕捉送如一个新的缓冲区, 你能一个个查看错误点, 然后修正标记的错误。

C-c /

Runs sgml-insert-end-tag. Inserts the end tag for the current open element.

  毫无疑问此编辑模式肯定还有其他实用的功能, 以上的这些是我最常用到的。

  你可以把如下的片断加入到 .emacs 中为处理文档项目设置适当的间隔, 缩进和列宽。

    (defun local-sgml-mode-hook
      (setq fill-column 70
            indent-tabs-mode nil
            next-line-add-newlines nil
            standard-indent 4
            sgml-indent-data t)
      (auto-fill-mode t)
      (setq sgml-catalog-files '("/usr/local/share/sgml/catalog")))
    (add-hook 'psgml-mode-hook
      '(lambda () (local-psgml-mode-hook)))
 

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.