Ted's Blog

Happy coding

emacs的定制&LISP包的加载

Ted posted @ 2008年9月16日 22:36 in emacs with tags emacs , 3426 阅读

一、emacs的启动配置文件

    emacs配置文件的文件名为“.emacs.el“或“.emacs“。它们通常位于计算机的 $HOME 目录,如果是MS Windows (Windows 2000, Windows XP以上),默认是 c:\Documents and Settings\username\Application Data\,这个适用于 Emacs22 以上的版本。Emacs21 默认的 $HOME 目录在 C:\ 。当然也可以通过环境变量 $HOME 重新设置,总之在比较大众化的操作系统中,你都可以通过C-x C-f ~/.emacs 来编辑您的个性化配置文件。
    “.emacs”文件其实是一个LISP程序脚本。emacs编辑器通过运行该文件中的脚本来对自身进行初始化。因此,“.emacs”文件的语法与就是LISP程序语言相同

补充:

1. 只有当插件被 emacs 成功加载了,我们才能使用该插件提供的函数

2. (require 'ecb):该函数首先会判断插件是否已经被加载,如果没有,则使用 load 函数来从 lisp目录中加载插件


二、快捷键的定制

  1. 键位映射图:多个按键绑定构成的一个集合。Emacs中有两类映射图:(1).全局影射图:对所有模式的编辑缓冲区都起作用的按键映射图 (2).局部映射图:对具体的编辑模式起作用的映射图。例如:c模式、文本模式等。当按下某个按键时,Emacs会首先查看当前编辑缓冲区的局部映射图里有没有对它进行定义。如果没有,就会查找全局映射图。如果找到了与按键对应的定义项,那么按键关联的命令就会被执行。
  2. 如果自定义的快捷键与系统中默认的快捷键冲突,则系统中默认的快捷键将会被替换

定制方法:

(1).(define-key keymap "keystroke" 'command-name):将快捷键定义保存到指定的keymap中
(2).(global-set-key "keystroke" 'command):只能将快捷键定义保存到全局keymap射图中
(3).(local-set-key "keystroke" 'command-name):只能将按键绑定到局部映射图中。每种编辑模式都对应了一张局部映射图。
(4).keystroke字符串中,必须使用\C来代表字符Ctrl,\M来代表字符Alt

三、设置emacs内部变量

setq函数用来设置emacs内部变量,其使用方法如下:

(setq auto-save-interval 800)

四、LISP初识

a. 数据类型

  1. t:true
  2. nil:false
  3. 字符串:使用""括起来
  4. 字符:以?开头。例如:?x代表字符x
  5. 标志符:以'开头。例如:表示函数名时使用‘command-name

补:LISP语言中的语句以“(”来表示语句的开始,以“)”来表示语句的结束

b. 函数的定义

defun关键字:用来定义LISP函数。

(defun my-cpp-mode()

(define-key c++-mode-map [return] 'newline-and-indent)

(define-key c++-mode-map [(control c) (c)] 'compile)

(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. 常用函数

  1. add-hook:该函数用来将某个函数与指定的模式绑定,当emacs进入相应的模式时,将自动调用与该模式绑定的函数。例如:(add-hook 'c++-mode-hook 'my-cpp-mode)
  2. require:该函数检测在当前emacs会话中是否加载了指定的插件,如果没有,则使用load函数来从系统的LISP目录中加载指定的插件。例如:(require 'session):从lisp-path中加载session.el文件

五、加载LISP包

  1. emacs编辑器的主要功能是使用LISP编程语言来写的,因此我们可以往emacs中加载LISP包来为emacs添加更多的功能。LISP语言是一种解释型语言,其程序文件的扩展名为*.el。
  2. c-h p:查看当前emacs会话所加载的LISP包
  3. 在".emacs“文件中使用require函数来加载指定的LISP包。例如:(require 'session):加载session包
  4. *scratch*缓冲区可以用来进行LISP代码的测试。首先,将LISP语句复制到该缓冲区中,然后将光标移动LISP语句的末尾,最后,使用C-x C-e来执行该LISP语句
  5. 系统默认的LISP包的目录为:“/usr/share/emacs/site-lisp”。安装LISP包时只需要将其复制到该目录下即可。

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter