"Emacs is not an editor. Emacs is a way of thinking about the world, and as such is a way of thinking about editors. The process of editing is Emacs, but Emacs is more than the process of Editing. When you ask what Emacs does, you are asking a question with no answer, because Emacs doesn't do, it is done to. Emacs just is. ... I hope this makes things clearer." - Scott Dorsey
简单的说, Emacs 就是一个文本编辑软件, 然而却可以用来写程序、写 论文、写网页、写 blog, 还可以管理文件、收发邮件、上网浏览等等,也 可以说,Emacs 就是一个操作系统。
Emacs 是GNU Project 的一部分,这里是它的官方地址,以及 FAQ For Windows。
Emacs-Wiki可以看作是 Emacs的一个扩展,引用 maintainer主页上的介绍, 就是 a wiki-like publishing tool and personal information manager.
安装
Windows环境下的 Emacs ,也就是NTEmacs, 这里提供一个下载的地址, GNU上有更详细的介绍。Emacs-wiki可以从 这里 获得,由于 Emacs-wiki 就是Emacs的一个扩展, 因此它的安装其实就只要在 Emacs 中加载。有些版本的 Emacs 中可能已 经自带了Emacs-wiki, 这可以在 Emacs 的配置文件 .emacs (有些 是_emacs) 中找到加载 Emacs-wiki的语句(比如搜索wiki):
(load "emacs-wiki") ; wikiwiki (veja lisp/extra-w/emacs-wiki.el)
如果要安装另外下载的版本,则需要先将以上语句注释掉。
解压缩 Emacs-wiki, 例如放到 Home 文件夹下(则它的路径就是 ~/emacs-wiki ),在 .emacs 中加入以下语句:
(add-to-list ‘load-path “~/emacs-wiki”) (require ‘emacs-wiki)
基本使用
Emacs的基本操作可以参考 Help 中的 Tutorial (C-h t)Emacs-wiki 的基本操作可以参考自带的 markup: C-h v emacs-wiki-publishing-markup
以上两个帮助文档可以说是写的相当详尽了。
便捷的设置
中文设置
(setq emacs-wiki-charset-default "gb2312") (setq emacs-wiki-coding-default "gb2312") (setq emacs-wiki-meta-charset "gb2312") (setq emacs-wiki-meta-content-coding "gb2312")
设置默认的css
(setq emacs-wiki-style-sheet "<link rel=\"stylesheet\" type=\"text/css\" href=\"../css/default.css\">")
保存时自动发布网页及索引
;;;_+ Automatically publish files AND INDEX upon saving
(defun sacha-emacs-wiki-auto-publish ()
(when (derived-mode-p 'emacs-wiki-mode)
(unless emacs-wiki-publishing-p
(let ((emacs-wiki-publishing-p t)
(emacs-wiki-after-wiki-publish-hook nil))
(emacs-wiki-publish-this-page)(emacs-wiki-publish-index)))))
(add-hook 'emacs-wiki-mode-hook
(lambda () (add-hook 'after-save-hook
'sacha-emacs-wiki-auto-publish
nil t)))
发布索引的命令为: emacs-wiki-publish-index , 我也给加到上边的代码里去了
快捷键预览页面及源码
;;预览当前的页面
;;用C-c C-h能够在浏览器中预览本地页面
;;用C-c C-c在Emacs中预览生成的HTML页面源码。
(defun emacs-wiki-preview-source ()
(interactive)
(emacs-wiki-publish-this-page)
(find-file (emacs-wiki-published-file)))
(defun emacs-wiki-preview-html ()
(interactive)
(emacs-wiki-publish-this-page)
(browse-url (emacs-wiki-published-file)))
(add-hook 'emacs-wiki-mode-hook
(lambda ()
(define-key emacs-wiki-mode-map
(kbd "C-c C-h") 'emacs-wiki-preview-html)
(define-key emacs-wiki-mode-map
(kbd "C-c C-c") 'emacs-wiki-preview-source)
))
Insert TAG
这里我用的快捷键是C-c C-t (tag),由于这个快捷键在emacs-wiki.el中定义的是emacs-wiki-publish-this-pag,而我用保存自动发布故用不到这个快捷键,所以就自定义掉了。;; Insert TAG , using C-c C-t
(defun auto-insert-tags ()
(interactive)
(insert "<")
(let ((tag (completing-read "tag: "
'("example"
"src"))))
(when (not (string= tag ""))
(insert tag ">\n")
(save-excursion
(insert "\n</" tag ">")))))
(add-hook 'emacs-wiki-mode-hook (lambda ()
(define-key emacs-wiki-mode-map (kbd "C-c C-t") 'auto-insert-tags)
))