转自:http://blog.csdn.net/schumyxp/article/details/2278268

emacs的配置文件,叫作.emacs,是个隐藏文件,存在于当前用户的根目录下面,也就是~/.emacs

emacs的配置文件采用了elisp作为配置文件的语言,来源于强大的lisp语言。下面我简单说一点emacs配置文件怎么写。虽然内容不多,也很肤浅,但是知道了这些,至少在编写自己的配置文件的时候,不会那么无序了。

在配置文件里面,引号(;)开头表示注释,比如下面这行
; this is the emacs config file

下面我来举一些例子,简单说说配置文件。

(setq transient-mark-mode t)
这行的意思是,给变量transient-mark-mode设置值为true。也可以简写为下面的样子
(transient-mark-mode)
但是我用22版本的emacs的时候,会出现warning,指出不建议我用简写的形式。因此,还是建议大家写成第一种形式,即:
(setq transient-mark-mode t)

前面的setq,是系统的关键字,表示给后面的变量赋值。t表示true,nil表示false。如果要关闭这个功能,就设置为nil。

这个变量transient-mark-mode,表示是否开启一个辅模式。这个辅模式可以高亮显示被选中的文本。如果不打开这个选项,也就是说不
进行设置(默认的是关闭),或者设置为nil,那么你选中的文本就没有任何变化。说白了,就是你根本看不到自己选中了哪些文本!!

好了,继续。
(setq load-path (cons (expand-file-name "~/.emacs.d")
 load-path))

一行,表示设置load-path。这个load-path就是emacs的自定义库的加载路径。load-path (cons
(expand-file-name "~/.emacs.d")
load-path)是一句lisp语言,意思就是说,在原有的load-path的前面,追加路径~/.emacs.d。以后,我们只要把要加载的库
(即.el文件)放到.emacs.d目录下面,emacs就会自动加载它了。

再看这两行
(require 'template)
(template-initialize)
这个是加载模版的时候做的。

(require 'template)表示调用template,
(template-initialize)表示调用了一个名称为template-initialize的方法。通过这两行,emacs就能加载模版了。后面很多库的配置都跟这很类似。

下面仔细说说add-hook。
比如我们要编辑c++的代码文件,emacs会调用c++的主模式。但是这个模式里面的一些设定跟全局的设
定不一样,我想进行一些个性化的设置。比如,我想输入分号(;)的时候,emacs会自动换行,并且让下一行跟上面一行对齐。比如缩进的长度,我想设置为
4个空格的长度(当然了,你要是想很个性的设置为5个也可以)。这个时候,就得用到add-hook了,它可以对指定的主模式进行个性化的修改。看下面的
内容:
;;set c program style
(add-hook 'c-mode-hook 'linux-c-mode)
(setq imenu-sort-function 'imenu--sort-by-name)
(defun linux-c-mode()
 (define-key c-mode-map [return] 'newline-and-indent)
 (interactive)
 (c-set-style "K&R")
 (c-toggle-auto-state)
 (c-toggle-hungry-state)
 (setq c-basic-offset 4)
 (imenu-add-menubar-index)
 (which-function-mode)
)
这个是修饰c语言的个性化模式。
(add-hook 'c-mode-hook 'linux-c-mode)

这行里面,c-mode-hook是系统内部的东西,后面的linux-c-mode是我们自己写的一个方法。通过c-mode-hook,我们就可以改
变c语言的主模式了。那改变成什么样子呢?就是linux-c-mode里面定义的样子。在linux-c-mode里面,每行都表示一种改变。比如第一
行:
(define-key c-mode-map [return] 'newline-and-indent)
就重新定义了回车键。当你输入回车的回车,会自动缩进。

最后再说一下按键的定义,比如:
(global-set-key [f8] 'gdb)
就是定义了一个全局的按键,把功能按键F8,对应到了gdb上面。按一下F8,emacs就会给你启动gdb了。

深入的东西,请大家自己去看一下elisp的文章吧。我也是刚开始看,很多还不了解,也只能写这些了先。

最新文章

  1. [Leetcode] Decode Ways
  2. Mongodb插入记录
  3. OOP感想
  4. chrome的timeline中stalled问题解析
  5. 【转】10.4新特性-ArcGIS 10.4矢量切片介绍
  6. UVa 1346 - Songs
  7. Installing Redis on Ubuntu
  8. Sharepoint 2013 系列篇(安装部署)--上篇
  9. 第二百六十天 how can I 坚持
  10. iPhone 7-b
  11. angularjs ios title不能修改的bug的解决方法
  12. Flex疑难小杂症
  13. HDU ACM 2845 Beans->动态规划
  14. 做自己的串口调试工具-MFC
  15. request模块
  16. Scrapy 框架,持久化文件相关
  17. Python爬虫的N种姿势
  18. Delphi导出数据的多种方法
  19. django具体操作(七)
  20. POP3命令与分析

热门文章

  1. jquery ajax 跨域訪问样例
  2. 深入理解javascript之设计模式
  3. DeepFM
  4. 使用fiddler进行手机数据抓取
  5. apache多网站配置
  6. 【Mongodb教程 第十九课 】PHP与MONGODB的条件查询
  7. iOS面试常见题
  8. Django之cookie 和 session
  9. sanic官方文档解析之Response和Cookie
  10. 用Qt编写的计算文件MD5值的Demo