在 windows 下的快速搭建 emacs

前言

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)
posted @ 2013-11-19 17:18  lvye1221  阅读(49)  评论(0编辑  收藏  举报