转自: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的文章吧。我也是刚开始看,很多还不了解,也只能写这些了先。

emacs配置文件的基础知识 (转载)的更多相关文章

  1. CSS3 基础知识[转载minsong的博客]

    CSS3 基础知识1.边框    1.1 圆角  border-radius:5px 0 0 5px;    1.2 阴影  box-shadow:2px 3px 4px 5px rgba(0,0,0 ...

  2. 浏览器是怎样工作的(一):基础知识 转载http://ued.ctrip.com/blog/how-browsers-work-i-basic-knowledge.html

    译注: 前两天看到一篇不错的英文文章,叫做 How browsers work,该文概要的介绍了浏览器从头到尾的工作机制,包括HTML等的解析,DOM树的生成,节点与CSS的渲染等等,对于想学习浏览器 ...

  3. 转载:shell脚本之前的基础知识

    转载地址:http://www.92csz.com/study/linux/12.htm 第十二章 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果 ...

  4. 转载 Deep learning:一(基础知识_1)

    前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下m ...

  5. RabbitMQ基础知识(转载)

    RabbitMQ基础知识(转载) 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需 ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. 【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  8. 【转载】Direct3D基础知识

    原文:Direct3D基础知识 重新从头开始学习DX,以前太急于求成了,很多基础知识都没掌握就开始写程序了,结果出了问题很难解决.   1.       D3D体系结构 D3D与GDI处与同一层次,区 ...

  9. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

随机推荐

  1. [Node.js] Trigger a File Download in Express

    Downloading and saving a file is a common scenario when building out your web application. Using Exp ...

  2. Method Swizzling以及AOP编程:在运行时进行代码注入-b

    概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...

  3. Intel Naming Strategy--2

    http://en.wikipedia.org/wiki/Intel_Corporation#Naming_strategy Naming strategy[edit] In 2006, Intel ...

  4. Oracle启动和关闭服务

    Oracle须要启动和关闭的服务: 1.OracleOracle_homeTNSListener     相应于数据库的监听程序 2.OracleServiceSID                 ...

  5. zabbix基于SNMP 协议监控路由器

    zabbix基于SNMP 协议监控路由器 步骤 步骤超级方便. 1. 路由器上开启snmp 2. 确保外网能訪问到 3. 用snmpwalk測试 4. 加入zabbix主机,SNMP interfac ...

  6. MySQL优化之——触发器

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46763665 触发器是一个特殊的存储过程,不同的是存储过程要用CALL来调用,而触 ...

  7. ADO直接调用ACESS数据库MDB

    1.ADO用ODBC链接不会出现堆栈溢出. 2.直接用ADO链接,因为对象不是NEW出来的,导致其成员变量也是栈上的,数组申请过大,栈溢出. 用VECTOR或者NEW对象,应该能解决.

  8. 你的以太网速度足够快吗?四种更快的速度正在路上······

    以太网的未来将远远超越下一个最快速度:为无处不在的网络协议绘制路径的网络project师们正在寻找新版本号来服务于各种应用程序. 在上周六的以太网联盟(一个行业组织,用于促进IEEE以太网标准)会议上 ...

  9. 如何用redis做到限制,一个手机号,1分钟内最多发一条,一天内最多10条

    需要两个缓存 key名称 phone-busy,缓存1分钟 key名称 phone-send-count,缓存1天,每成功发送一条+1 发送的时候流程如下: 判断phone-busy是否存在,存在直接 ...

  10. 树状数组(二叉索引树 BIT Fenwick树) *【一维基础模板】(查询区间和+修改更新)

    刘汝佳:<训练指南>Page(194) #include <stdio.h> #include <string.h> #include <stdlib.h&g ...