第一启动emacs会在~目录下创建.emacs.d目录
使用.emacs.d目录管理Emacs配置文件
参考:Declaring .emacs Bankruptcy
Emacs的默认配置文件是.emacs,Emacs启动时会读取并执行.emacs中的LISP代码,用户使用.emacs达到自己的Emacs初始化配置目的。
不过单独使用.emacs有一个问题,因为时间一久,Emacs的初始化配置会变得很多很乱,各种mode的配置都放在.emacs中,.emacs文件中的代
码就变得很长,不利于管理、更改和阅读。其实Emacs建议了另外一种管理初始化配置的方式,我们新安装的Emacs都有一个.emacs.d目录,
就是利用这个目录实现按分类逐个加载初始配置文件来管理Emacs初始配置的方式。
使用.emacs.d目录管理Emacs初始化配置文件,如下设置:
在默认配置文件.emacs中使用:add-to-list,将自己的配置文件路径,通常就使用.emacs.d,加入到load-path,并使用:require,加入配
置文件提供的特性(Feature),一般来说将配置文件名和其提供的Feature命名相同。例如,下面的.emacs配置文件:
1
;; This is the main Emacs initialization file - .emacs.
2
3
(add-to-list 'load-path (expand-file-name "~/.emacs.d"))
4
(require 'feature_1)
5
(require 'feature_2)
6
(require 'feature_3)
在.emacs中加入的load-path配置文件路径中,即上面的.emacs.d目录,放入自己的配置文件。这些配置文件可以按照功能分类组织,例如,
在.emacs.d中放入:feature_1.el、feature_2.el、feature_3.el。注意:要在每个配置文件中使用provide定义其提供的Feature,比如:
feature_1.el这个配置文件,它提供feature_1特性,即是.emacs中使用require命令要求的feature_1特性,那么要在feature_1.el中加入
provide,则feature_1.el内容如下:
1
;; This is my Emacs customization file feature_1.el providing
feature_1.
2
3
(provide 'feature_1)
4
5
;; customization code ...
这样按功能分类组织Emacs的初始化配置文件就清晰多了,原来的默认配置文件.emacs现在只是一个调入其它配置文件的入口,它的内容也少
多了,更容易扩展和管理。关于Feature、require、provide的详细功能参考Emacs的GNU官方文档:15.7
Features。
另外提一句,目前很多Linux下的开源的软件都支持这种:.xxx.d目录的方式管理配置文件,其中xxx是软件相关的名字。
2010/7/2 Limp_T
emacs-23.exe解压该文件,解压后进入相应的文件夹,文件夹下包含以下子文件夹:bin、data、etc、info、leim、lisp、lock、site-lisp、
var.bin文件夹中是一些可执行程序,info文件夹中是帮助信息,site-lisp文件夹中是一些扩展的包(Emacs的插件一般都是一个以el为后缀名
的文件).
在bin文件夹中,运行addpm.exe,注册系统变量ComSpec,在我的电脑图标上点击右键,选择"属性",然后选择"高级"选项卡,在"高级"选项卡
下面选择"环境变量",在"系统变量"栏中可以看到有一个变量叫做"ComSpec",它的值为C:\WINDOWS\system32\cmd.exe(和%SystemRoot%
\system32\cmd.exe一样).该变量的作用是指示emacs调用系统的shell,在windows下一般用的都是cmd,当然也可以使用cgywin等其它的shell,
使用cgywin等作为emacs默认的shell时可能会需要一些其它的设置,这些可以参考emacs的在线帮助.运行addpm.exe后,会给emacs添加开始菜
单.运行runemacs.exe可以启动emacs。
emacs安装好了以后应该对它进行配置,只有经过一些必要的配置,它才配得上"能煮咖啡"这个称号.
首先在“环境变量”中添加“HOME”变量,例如值为“E:\ erlang” (erlang工程);
接着在“HOME”变量的路径下的目录建立一个文件名为".emacs"的文件(如果不设置HOME变量,可以在根目录C:\目录下建立这
个".emacs"文件),如果直接在windows下建立一个".emacs"文件,windows会提示请输入文件名,建立不成功,我们最好直接就用emacs来建立这
个文件,在emacs下通过菜单File->Visit New
File...来建立一个文件,文件名就是".emacs".".emacs"文件是emacs的配置文件,emacs在启动
的时候会从".emacs"文件中读取配置信息,来打开或者关闭各种功能,初始化扩展包或者配置界面上的一些显示(去掉菜单栏,工具栏,改变背景
颜色等).
最后创建一个Emacs的快捷方式,放在桌面或者任务栏快速启动,右击快捷方式选“属性”,将“起始位置”设为"E:
\erlang“或"%HOME% "(HOME环境变量)。这样Emacs启动后可以直接定位到erlang工程的目录。
Windows下设置Emacs的HOME目录
总的来说,Emacs的默认配置文件放在变量HOME所指的路径下,所以,只要我们把.emacs扔到HOME所指向的目录就可以了,下面就简单介绍一
下在Windows下设置home目录的几种方法,并进行简单的对比。
第一种方法,改变home环境变量的值。
这种方法,改变了$home变量,也会影响Cygwin或是其他一些应用程序,因为有一些程序会根据Windows的home环境变量来寻找数据存放的路
径。
第二种方法,不改变Windows默认的home值,设置默认的.emacs文件读取你自己的Emacs配置文件,并重新设定Emacs的home目录。
你可以在Emacs中输入C-x
C-f,然后打开路径~(即当前的home环境变量所指的路径,一般来说是这样的路径:C:/Documents and
Settings/water/Application Data)。
看看显示的是哪个目录,如果此目录下没有.emacs,可以创建一个.emacs或_emacs,然后在这个.emacs文件里,加入如下语句:
?View Code LISP
(load-file "E:/water/.emacs")
文件 E:/water/.emacs
才是我们真正的Emacs配置文件,我们可以在这个真正的配置文件里用如下语句设置我们的home目录:
?View Code LISP
1
2
3
4
5
(setenv "HOME" "E:/water")
(setenv "PATH" "E:/water")
;;set the default file path
(setq default-directory "~/")
(add-to-list 'load-path "~/emacs/site-lisp")
这个方法的优点是比较简单同样也方便对.emacs文件备份,不会对其它应用程序产生任何影响。
第三种方法,修改注册表,在注册表中进行如下设置:
HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\HOME=%emacs_dir%
以上三种方法都可以设置好Emacs的Home目录,但是,系统是按什么顺序来解析它们的呢?大体上的顺序是这样的:
如果设置了环境变量HOME,则使用HOME指定的目录。
如果设置了注册表里的值HKCU\SOFTWARE\GNU\Emacs\HOME,则使用这个值所指定的目录作为home目录。并不是太推荐使用这种方法,因为会
导致用户共享一个home目录。
如果 C:\.emacs 文件存在,则使用 C:\.emacs
这个文件。这个是为了向低版本的Emacs兼容,因为低版本的Emacs就是默认用这个文件作为
配置文件。
把用户的AppData目录作为home目录(通常来说,就是类似这样的目录 C:/Documents and
Settings/water/Application Data ),这个用户
的数据目录根据Windows版本的不同而有所不同。
我个人比较喜欢用第二种方法,即简单又方便备份。
其实,如果你只是想要Emacs能找到你的.emacs的话,也可以不用管HOME目录的,写个批处理文件emacs.bat:
path-of-emacs.exe -q -l path-of-your.emacs
以后执行这个批处理文件就可以用你的配置打开Emacs了。
5、加载.el文件
lisp目录下存放着lisp源文件(*.el)和已编译的lisp文件(*.elc),以后你也可以将自己的.el文件放在这个目录下,然后还要在.emacs文件插入相关语句。比如你有一个文件叫做abcd.el,将它复制到lisp目录下,然后打开.emacs文件插入一句(require
'abcd)就可以了(包括圆括号,不需要扩展名.el)。
如果你不喜欢lisp文件夹,也可以自己新建一个,比如在home目录下建一个文件夹叫做xyz,然后把abcd.el放在xyz目录下,在.emacs文件插入以下两句:
(setq load-path (cons "~/xyz" load-path))
(require 'abcd)
第一句告诉emacs先加载你的xyz目录,第二句再加载abcd.el。