前言

emacs 是来源于 linux,并且在那里使用时,是最让我觉得舒服的。但大多数情况我还是在 windows 下使用。经过两年的使用,经常会遇到这种情况:在某个地方(公共机或别人的电脑上)不能使用 emacs 软件,又需要编辑一些文件,用记事本用着会很不舒服。尽管可以在官方下载到 emacs 对应的版本,但需要重新配置那还是挺麻烦的。所以,以我现在的使用经验,整理了在 windows 快速搭建 emacs 的方法,仅供参考。

现在笔者选定的是 emacs-23.4-bin-i386.zip,而且以下的配置过程均以这个版本进行测试的。快速搭建的主要思想是采用执行注册表脚本,设定 emacs 查找配置文件的路径为 c:/emacs-home/.emacs,同时又在此文件中定位到我们现在刚下载的路径,及更改 home 目录的方式。包含最基本的配置(颜色、字体等)、脚本以及常用的库。已上传到了我的资源中:

http://download.csdn.net/detail/lvye1221/6576789。

快速搭建三步曲

相当于快速搭建只需要这三步即可。

1. 下载 emacs 软件包:emacs-23.4-bin-i386.zip

http://mirrors.ustc.edu.cn/gnu/emacs/windows/

2. 下载配置工具包,解压到 emacs-23.4/ 目录下。修改压缩包中 install/emacs-home/emacs-home/.emacs 第一行 "D:/emacs-22.3/home" 为实际 emacs 的 home 路径

3. 执行 install/install.bat 批处理即可

注意:如果当前系统为 Win7 或者 Windows Server,用管理员权限执行就 OK 了。否则,就手动点击 setHomel.reg 注册,参照脚本拷贝文件夹到 C 盘对应位置即可。

脚本分析 如果大家不想浪费积分下载资源,或者想尝试手动编写脚本。这里附上对应文件的代码:

setHomel.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\GNU]

[HKEY_CURRENT_USER\Software\GNU\Emacs]

"HOME"="C:\\emacs-home"

install.bat

@echo off

xcopy emacs-home /s c:\ /y

regedit /s setHome.reg.reg&&echo 导入成功||echo 导入失败

emacs-home\.emacs

(setenv "HOME" "D:/emacs-22.3/home")

;;set the default file path

(setq default-directory "~/")

(load-file "~/.emacs")

(add-to-list 'load-path "~/emacs/site-lisp")

快速搭建后,执行 bin\runemacs.exe 看到了我所喜爱的界面(不知道大家喜不喜欢哈~)。那如果还想添加其他的功能,怎么办呢? 答案是直接编辑 home 目录下 .emacs 文件,尽情地添加如下如下扩展功能吧!

其他扩展好用的插件

当然这里仅仅提供了配置文件中的配置方式,有些地方是需要下载对应的 el 文件,并包含到加载路径中,这里我就不提供下载链接啦。

php 编辑模式

(require 'php-mode)

bit编码

;; 优先使用chinese-iso-8bit编码,这句话不管用。在打开中文乱码时,用revert-buffer-with-coding-system修改

(prefer-coding-system 'chinese-iso-8bit)

画图插件

(load-file "../site-lisp/graphviz-dot-mode.el")

加载已经定义的宏 ;; 加载已经定义的宏

(load-file "~/macros")

mew 邮件配置 ;; mew 邮件配置

(add-to-list 'load-path "../site-lisp/mew")

(autoload 'mew "mew" nil t)  

(autoload 'mew-send "mew" nil t)  

;; Optional setup (Read Mail menu for Emacs 21):  

(if (boundp 'read-mail-command)  

    (setq read-mail-command 'mew))  

;; Optional setup (e.g. C-xm for sending a message):  

(autoload 'mew-user-agent-compose "mew" nil t)  

(if (boundp 'mail-user-agent)  

    (setq mail-user-agent 'mew-user-agent))  

(if (fboundp 'define-mail-user-agent)  

    (define-mail-user-agent  

      'mew-user-agent  

      'mew-user-agent-compose  

      'mew-draft-send-message  

      'mew-draft-kill  

      'mew-send-hook))  

(setq user-full-name "yangjie")  

(setq user-mail-address "yangjie.green@gmail.com")  

(setq mew-cite-fields '("From:" "Subject:" "Date:"))  

(setq mew-cite-format "From: %s\nSubject: %s\nDate: %s\n\n")  

(setq mew-cite-prefix "> ")

(setq mew-use-cached-passwd t)  

;; 设置 mew 密码生存时间

;; (setq mew-passwd-timer-unit 999)

;; (setq mew-passwd-lifetime 999)

;; 下面的图标路径和安装路径有关,具体请看Mew的安装过程    

(setq mew-icon-directory "~/../site-lisp/mew/etc")    

(setq mew-use-cached-passwd t)    

;; mew-pop-size设置成0时,pop邮件大小没有限制    

(setq mew-pop-size 0)    

(setq toolbar-mail-reader 'Mew)

(set-default 'mew-decode-quoted 't)

(setq mew-prog-pgp "gpg")

(setq mew-name "yangjie")

(setq mew-user "yangjie")

;; 不删除服务器上的邮件    

;; (setq mew-pop-delete nil)    

;; 回复邮件位置设定,如果设置为 body,即回复出现在引文之前,如设置为 end,在引文后回复

(setq mew-summary-reply-with-citation-position 'body)

;; 签名档设置

(setq mew-signature-file "~/Mail/signature")

(setq mew-signature-as-lastpart t)

(setq mew-signature-insert-last t)

(add-hook 'mew-before-cite-hook 'mew-header-goto-body)

(add-hook 'mew-draft-mode-newdraft-hook 'mew-draft-insert-signature)

;; 新邮件通知

(load "biff")

;; 必须

(setq mew-use-cached-passwd t)

(setq mew-use-biff t)

(setq mew-use-biff-bell t)

;; 这个值一定要小于下面的timer-unit和lifetime值,这个可以使用describe-variable查看一下

(setq mew-biff-interval 5) 

(setq mew-pop-biff-interval 3)

(setq mew-passwd-timer-unit 60)       ; 60 minutes = 1 hour                                            

(setq mew-passwd-lifetime 24)         ; timer-unit x 24 = 24 hours 

(put 'downcase-region 'disabled nil)

(custom-set-faces

  ;; custom-set-faces was added by Custom.

  ;; If you edit it by hand, you could mess it up, so be careful.

  ;; Your init file should contain only one such instance.

  ;; If there is more than one, they won't work right.

 )

时间戳功能

;;时间戳设置(time-stamp),设定文档上次保存的信息  

;;只要里在你得文档里有Time-stamp:的设置,就会自动保存时间戳  

;;启用time-stamp  

(setq time-stamp-active t)

;;去掉time-stamp的警告?  

(setq time-stamp-warn-inactive t)

;;设置time-stamp的格式,

(setq time-stamp-format "%04y-%02m-%02d %02H:%02M:%02S, by %:u")

;;将修改时间戳添加到保存文件的动作里。  

(add-hook 'write-file-hooks 'time-stamp)

文章来源

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。