转载:不完全解读 Emacs 编辑器—自由软件的旗舰
L-Emacs 2008-11-17 21:41:10 阅读45 评论0 字号:大中小 订阅
作者: texnician@dRL
希望本文能指引你进入Emacs的神奇世界
一 基本介绍
1. Emacs是什么东西?
Emacs名字的正式由来是"Editing Macros"的简称,即“宏编辑器”,当然这个“宏”
和臭名昭著的“宏病毒”没有半点关系。也有一种说法是rms(Emacs的作者)最喜欢的
一家冰淇淋店的名字。经过将近20年的发展, Emacs的功能不断的增强,现在更通用
的说法是"Emacs is the extensible, customizable, self-documenting real-time
display editor"。
也许你早就从网上,朋友或者某个讨厌的Emacs fake zealot(比如我)那里听说过有
个 叫 "Emacs"的东西。也许你一直以为Emacs是来自遥远的*nix世界的魔鬼,而对它
畏而远之,但实际上,Emacs是一个真正的跨平台软件,在最大限度上保证了平台无关
性,即使是在Windows下,也表现的非常出色,实际上我现在就是在Windows下写这篇
文档。应广大用户的要求,微软 的Visual Studio .Net 2005 beta版中已经实现了简
单的模拟Emacs编辑模式,也许在正式版中会得到进一步的加强。
2. Emacs能做什么?
顾名思义,Emacs的“本职工作”是编辑文本。这里的文本包括的 范围就很大了,像
我现在写的这样简单的纯文本,更主要是用来编辑各种程序的源代码,比如C, C++,
C#, Perl, Python, html, php, lisp, matlab, tex....。Emacs的强大体现在它的人
性化,和智能化。比如不管在哪种语言模式下,都可以用 M-e, M-a 移动一句话,
M-{ M-} 移动一个段落,C-M-f, C-M-b 在平级的语法结构中移动,C-M-a C-M-e 在语
句块中前后移动,等等等等。你不需要去记住每个模式的操作方式,因为它们是如此
的一致,Emacs通常会很“聪明”的识别不同模式下各种语法结构的意义, 在任何模式
下 C-M-/ 都会把一段代码排版的整整齐齐, M-; 可以插入一条注释并缩进到正确的地
方。
用Emacs编辑代码,可以实现语法加亮,折叠,隐藏,大纲模式,自动补全等基本功能
,可以直接调用编译器和调试器来编译,调试程序,可以直接把网页代码送到浏览器
中预览,可以把Emacs当成一个代码浏览器。关于Emacs编写程序方面的扩展实在是太
多了,由于我水平很菜,也没接触过很多,总之当你有自己的需求的时候,直接去网
上找,Emacs很少会让你失望的。
除了被用来编辑文本,Emacs也越来越多的被用来做其它事情,而且往往做得非常出色
。 dired 模式被用来作为文件管理器, 其功能比起同样出色的Total Commander可一
点都不弱。Gnus是访问新闻组和接收邮件的利器,实现了专业级别的 Mail Client 功
能,Gnus 的 FAQ 中这样写道 "不要再问 ‘我能xxxx吗?’之类的问题,因为你得到
的答案通常都是 ‘Yes’"。当然有点夸张了, 因为对于某些"私有"的东西,Gnus 支持
的并不好,比如微软的 hotmail。
Emacs还可以被用来作为很多程序的前端,比如 mysql 数据库, Matlab 软件, 各种
Scheme 解释器。
Emacs还有一大堆“乱七八糟”的功能,Emacs的日历,能支持中国的历法,天干地支
都支持,还能根据你所在地方的经度纬度计算日出日落时间。配合Emacs日历,可以写
日记,约会提醒等等和日程相关的事情。你要是想用Emacs做计算器,查字典,聊天,
播放mp3,使用p2p下载软件,这些也不是不可以。
3. 为什么要用Emacs?
看了前面一大堆功能(虽然不及Emacs实际功能的1%),你可能会说“你丫是不是有毛
病,这些功能都有专门的软件去实现”。你说的没错。当然每个人都有自己的选择习
惯。但是我的感觉是,Emacs不仅仅是能实现这些功能,关键是实现的往往非常出色,
不逊色于专有的软件。而且在Emacs中做这些事情,有一个统一的工作环境,不需要去
熟悉各种软件的操作习惯,在Emacs中你会发现许多看似毫不相关的软件功能,在
Emacs 中变得如此相似,我觉得这种感觉很美妙:P。
Emacs是一个“free software”,这里的“free”是指“freedom”,而不是“免费”
的意思。当然对个人用户来说,获得Emacs通常都是免费的。你永远不会担心“新版本
的完美破解怎么还没出来?”“升级到新版本,key又失效了”,“这个软件要是再便
宜一点我就能注册了”,“这个软件的作者真不厚道,老的注册用户都不能免费升级了
”之类的问题。Emacs属于所有人,它是完全自由的,你可以自由的修改它以实现你需
要的功能,可以自由的和别人分享你修改后的代码,当然这一切都要遵循GPL。
4. Emacs与其它编辑器相比有什么优点?
这个问题我没办法回答,因为我不敢对我不怎么了解的东西妄加评论。尤其是在 et8
这藏龙卧虎的地方(我想你们也一样吧?)。我只能说Emacs 开放的 C+elisp 架构使
其具有几乎无限的扩展性,在扩展性方面,是当之无愧的 No.1. 如果你看到其它某种
编辑器有个很酷的功能,不用怀疑,Emacs 可以实现它,如果你足够强,可以自己动
手或者向某个你熟悉 elisp 高手求助。 总之,没有什么作为一个编辑器应该具有的
功能是 Emacs 实现不了的 。
5. Emacs 与其它编辑器相比有什么缺点?
这个我倒可以说说:P。首先,用 Emacs 会上瘾,在一个没有 Emacs 的机器上,你会
无精打采,没有工作的热情。如果你失去了自己的配置文件,你会变得痛苦万分,因
为重新把 Emacs 配置一遍是很要花一番功夫的(除了 Emacs 还没见过哪个软件的配
置文件能让人穷此一生的去研究)。其次,Emacs 和其它编辑器相比是“臃肿”的,
和vim, editplus 这样小巧的编辑器相比,它体积大,启动慢,耗内存(现在我机器
上开了一个ue,四个emedit,和一个editplus,它们加起来消耗的内存还不到 Emacs
的一半 =_=),不过它的运行速度可一点都不慢,嘿嘿。其实 Emacs 本来就不想做一
个小巧的编辑器,它的“正确使用方法”是:随着你的系统一起启动,直到你一天的
工作结束后关机,在这一天的工作当中,也许你根本不需要离开 Emacs。最后,
Emacs 的操作习惯让大部分用惯了 Windows 的人感到不爽, 很多人都是因为这个放弃
了它。刚开始你会觉得,Ctrl Alt Shift Esc + 各种各样奇怪的按键方法很变态。事
实上 Emacs 的优势不在击键次数,使用 Emacs 就是要让它少按键甚至不按键就实现
你想要的功呢。要说按键的简洁,那老大应该是 Vim :P。再说, Emacs 的按键没有你
想象的那么复杂,它们的设计都有统一的规律, 熟悉了一种模式的按键,很容易就会熟
悉其它模式中的按键 , 这就是 Emacs 统一编辑环境带来的好处。
6. 尝试消除对 Emacs 的几个偏见。
1. “我X,啥破玩意,连语法加亮都没有,删了它”。
很多人这样抱怨 ,不过稍微用脚丫子想一想,最早作为一个程序员给程序员写的
编辑器,可能连这种最基本的功能都没有么?实际上Emacs 对语法加亮的支持非常
好,它是根据语法分析来着色的,而不是死板的定义一堆的关键字和正则表达式。
语法加亮其实是一个比较消耗资源的功能,特别是在 Emacs 诞生的那个年代。而
且 Emacs 所支持的机器比一般人听过的都要多,不是每个机器都支持彩色
的....,类似的情况还有加亮选择区域。还有可能是,最早使用Emacs 的超级大牛
根本不需要这个既消耗资源又对他们没什么用的功能。总之, Emacs 由于种种历
史原因,保留了它特有的一些风格。只要是稍微有耐心的人,都会在 Option 菜单
最显眼的地方找到打开它的选项。
2. “开源的东西,还免费,质量靠不住”。
这么认为的人应该不多。能在这个年代还抱有这种可笑的偏见只有两种人:火星人
和极端的 Warez zealot。即便是微软,也只会在他们的 FUD 战术中“违心”的宣
称一下而已,能骗一个是一个嘛:P。
二. 实战 Emacs
看到我前面白乎了一大堆,你可能不耐烦了,拜托再给点面子,下面是实战部分了,别
错过最关键的东西。再说俺打这么多字也不容易,都是在一个坛子里混得,给点面子吧
。
-1. 写在最前面
如果你第一眼看到 Emacs 就对它感到无比的厌恶,很简单,Quit & Delete. 或者
误打误撞,遇到一些常见的小毛病,如何解决?我首先教你如何做这些。
按键说明: 按键是大小写敏感的,也就是说 'C-A' 表示 Ctrl+Shift+A, 'C-$' 表
示Ctrl+Shift+4.
C-x 表示 按住 Ctrl+x
M-x 表示 按住 Alt+x 或者 按一下 Esc 再按一下 x
C-x y 表示 按住 Ctrl+x 松开Ctrl 再按下 y
M-x y 与上面类似.
C-x C-y 表示 一直按住 Ctrl,然后按下 x y
M-x M-y 与上面类似.
RET 表示回车
是不是觉得麻烦,实际上有人说 Emacs 是 'Esc Meta Alt Ctrl Shift' 的简称。你
可以考虑买一个跳舞毯来方面你操作。
在 Emacs 中,你不知道做了某种操作,导致 Emacs 进入某种意外的状态,这时候
按下 C-g 结束当前命令。记住,不管在任何模式下,想中止
当前命令,按下 C-g
如果跳出一个buffer,里面有一堆 (((xxxx))) 之类的调试信息,那是 Emacs 的
lisp 解释器出错了,这时候简单,直接按一下'q' , 这个讨
厌的窗口就消失了。
如果你不想玩了,甚至准备删除 Emacs,如何退出呢?
1. Ctrl+Shift+Esc 调出任务管理器杀死(最解恨的方法)。
2. 如果你觉得上一种方法太粗鲁,也可以从菜单退出,
File->Exit Emacs.
3. 也许你想表现的更好,使自己的操作更有 “Emacs味”,那么
标准的操作是 C-x C-c
然后你可以去睡觉,做别的事情,甚至是直接删除整个Emacs目录,连回收站都不要
它去!
1. 获得 Emacs
废话少说,最直接的办法,去 Emacs 的老窝直接下载。下载地址是
http://ftp.gnu.org/pub/gnu/emacs/
Emacs 现在的稳定版本是 21.3。我个人推荐的是去
http://savannah.gnu.org/projects/emacs/
下载最新的 CVS 版本,CVS Emacs 做了很多有用的改进, 特别是在中文支持方面做
得更好了, 当然 21.3 也没有问题, 如果你不会用 CVS 就算了。而且从源码编译
Emacs 往往需要 Visual Studio。有点麻烦,谁让 Windows 下连个免费的编译器都
没有呢。权宜之计,可以从这里下载最近编译的 CVS Emacs
ftp://soft.eeatech.org:11021/incomi...er/Gnu%20Emacs/
不过我不能保证连接的有效性。真希望 et8 有个热心人能做一下这个工作,就像
Mplayer K&K 版一样。
感谢五楼提供的信息,这个连接应该比较可靠,虽然版本不如上一个新
http://sourceforge.net/projects/nqmacs/
2. 安装方法
Emacs 不需要安装,属于大家所提倡的那种"绿色软件",解压缩后,进入 bin 目录,
双击 runemacs.exe 就可以运行了。还有,把 emacs 的 bin
目录的绝对路径,添加到你的PATCH 环境变量中,如何设置
环境变量? 我的电脑->右键->属性->高级->环境变量....不说了,这些基本的
windows 操作您比我明白。这一步不是必须的,但是 有些必要 。
2. 基本配置
Emacs 的配置文件是一个叫 .emacs 的文件,不知道 M$ 哪两
个部门的沟通出了点问题,导致 windows explorer 无法直接创建 ^.* 这样的 文件
(而这样的文件名在windows文件系统中却又是合法的,啧啧), 所以 ,在
windows下也可以 用_emacs 来代替。
下一步,让emacs找到你的 .emacs 配置文件,如果你什么都懒得做,就直接仍到
C:/ 下面好了。但是我最强烈 的推荐大家,稍
微多做一点点工作,以便以后工作的更好。设置一个“主目录”,这个目录
通常就是
c:/Documentsand Settings/Administrator
你也可以设置能其它目录,以方便重装系统的时候备份。
设置主目录有两种方法
1. 新建一个名字叫 HOME 的环境变量。变量值就是你的想
要的目录路径名称。
2. 如果你觉得第一种方法不过瘾,想让 Windowz 最强大的注册表发挥一下功能,
也可以。新建一个数据项
HKEY_CURRENT_USER/Software/GNU/Emacs
在里面添加一个 REG_SZ 类型的字符串,名字就叫
HOME, 值就是你想要的目录路径名。
设置好主目录后,把 .emacs(_emacs) 扔进去。最基本的设置就算完成了。
3. 中文支持
Emacs 是一个真正的支持多语言编辑器。试试看
M-x view-hello-file
会列出Emacs支持的所有语言。如果有些大方块在里面,那不是Emacs 的错,因为你
的系统里没有那种字体。
如果你下载的是那个 CVS Emacs,据说默认就支持中文了。如果是21.3 ,可能需要一
点配置。
打开 .emacs(_emacs) 文件,你现在还不会用 Emacs, 所以还是先用notepad, ue,
editplus 等你熟悉的编辑器吧。
注意:绿色部分为代码,直接copy过去就可以,';'开头的行
,是elisp的注释行,但愿你的编辑器已经支持它了。
加入以下几行。
(set-terminal-coding-system 'chinese-iso-8bit)
(set-keyboard-coding-system 'chinese-iso-8bit)
(set-language-environment 'chinese-gb)
(set-clipboard-coding-system 'chinese-iso-8bit)
(set-selection-coding-system 'chinese-iso-8bit)
(setq locale-coding-system 'chinese-iso-8bit)
(setq current-language-environment "Chinese-GB")
注意:这以上设置只适用于 gb2312, 如果要使用接下来的
gbk 配置,把这部分删掉!
启动emacs, 试着敲几个中文,应该不会有问题了。
Emacs 默认支持的是 gb2312 的中文,虽然大部分情况是足够用了,但偶尔还是会遇
到 gb2312 以外的字符,比如我们前总理的名字。不管出于什么理由,的确有办法让
Emacs 支持 gbk 字符集。设置稍微麻烦一点。首先去这里下载最新的,一定要最新
的! mule-gbk
http://mule-gbk.sourceforge.net
解压缩后看看里面的 README 文档,那个文档是为 Linux 写的,所以可以直接看我
下面的说明。
在 .emacs(_emacs) 文件的第一行,务必是第一行! 加入如下内容。
;; Top line of .emacs: -*- coding: chinese-iso-8bit; -*-
这是为了在后面使用中文的字体名字。
紧接着的一行是:
(add-to-list 'load-path "d:/emas-lisp/mule-gbk-0.1.2004080701")
引号中的部分是你的 mule-gbk 解压缩到的目录,建议你和我一样,建立一个目录专
门存放自己的 .el 文件,我的是 d:/emacs-lisp。
随后的部分是
(setq w32-charset-info-alist
(cons '("gbk" w32-charset-gb2312 . 936) w32-charset-info-alist))
(require 'mule-gbk)
(set-w32-system-coding-system 'chinese-gbk)
(set-terminal-coding-system 'chinese-gbk)
(set-keyboard-coding-system 'chinese-gbk)
(set-language-environment 'chinese-gbk)
(set-clipboard-coding-system 'chinese-gbk)
(set-selection-coding-system 'chinese-gbk)
(setq locale-coding-system 'chinese-gbk)
(setq current-language-environment "Chinese-GBK")
接下来要区别一下,如果你下的是标准的 21.3,采用下面的设置:
;; Setup X Selection for mule-gbk
(mule-gbk-selection-setup)
如果你下的是 CVS Emacs,采用这个设置:
;;; Unicode support, for Emacs CVS (21.3.50) only
(when (fboundp 'utf-translate-cjk-mode)
;; Load modified utf-translate-cjk-mode
(require 'gbk-utf-mode)
;; Turn on utf-translate-cjk-mode
(utf-translate-cjk-mode 1)
;; Setup X selection for unicode encoding
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)))
分歧到此为止,下面的部分,是统一的:
(create-fontset-from-fontset-spec
"-*-Courier New-normal-r-*-*-14-*-*-*-c-*-fontset-most,
chinese-gbk:-*-宋体-normal-r-*-*-16-*-*-*-*-*-gbk*-*,
chinese-gb2312:-*-宋体-normal-r-*-*-16-*-*-*-*-*-gb2312*-*,
chinese-cns11643-5:-*-宋体-medium-r-*-*-16-*-*-*-*-*-gbk*-*,
chinese-cns11643-6:-*-宋体-medium-r-*-*-16-*-*-*-*-*-gbk*-*,
chinese-cns11643-7:-*-宋体-medium-r-*-*-16-*-*-*-*-*-gbk*-*,
korean-ksc5601:-*-Batang-normal-r-*-*-16-*-*-*-c-*-ksc5601.1987*-*,
chinese-big5-1:-*-宋体-normal-r-*-*-16-*-*-*-*-*-big5*-*,
chinese-big5-2:-*-宋体-normal-r-*-*-16-*-*-*-*-*-big5*-*,
japanese-jisx0208:-*-MS UI Gothic-medium-r-*-*-16-*-*-*-*-*-jisx0208*-*" t)
(setq default-frame-alist
(append
'((font . "fontset-most"))
default-frame-alist))
以上一大段是新建了一个字符集 'fontset-most'。英文字体是 Courier New, 如
果你有更漂亮的等宽字体,把名字改了就是,虽然我也知道 Tahoma 更漂亮,但它
真的不适合用在编辑器里。确保代码无误,启动 Emacs, 敲一下前总理的名字,看
看正常没有?如果正常,说明你的 Emacs gbk 已经配置好了。
4. 做一点改变,让 Emacs 符合 Windows 用户的习惯(慎用慎用)。
;按照windowz用户的习惯使用 `C-x C-c C-v'
(setq cua-mode t)
;按照windowz用户的习惯,使用 'Ctrl Alt Shift + 方向键移动和选择文本'
(setq pc-selection-mode t)
5. 一些基本的设置
;;打开语法加亮
(cond ((fboundp 'global-font-lock-mode)
;; Load the font-lock package.
(require 'font-lock)
;; Maximum colors
(setq font-lock-maximum-decoration t)
;; Turn on font-lock in all modes that support it
(global-font-lock-mode t)))
;;加亮选中部分
(transient-mark-mode t)
;关闭起动时的那个“开机画面”。
(setq inhibit-startup-message t)
;显示列号。
(setq column-number-mode t)
;不要在鼠标点击的地方插入剪贴板的内容,不然你的文档很容易变得乱七八糟。
(setq mouse-yank-at-point t)
;括号匹配时加亮显示另外一边的括号,而不是烦人的跳到另一个括号。
(show-paren-mode t)
(setq show-paren-style 'parentheses)
;光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线。
(mouse-avoidance-mode 'animate)
;在标题栏显示buffer的名字,而不是 emacs@!#*&!(&@# 这样没用的提示。
(setq frame-title-format "emacs@%b")
;设置一下备份时的版本控制,这样更加安全。
(setq version-control t)
(setq kept-new-versions 3)
(setq delete-old-versions t)
(setq kept-old-versions 2)
(setq dired-kept-versions 1)
;设置自动备份文件保存的目录,以免把你的磁盘弄得乱七八糟(你可以去掉这一行试
;试看:P ~/.autosave 表示主目录下的一个叫.autosave 的子目录,按照前面的方
;法设置主目录。
(setq backup-directory-alist '(("." . "~/.autosave")))
;让 dired 可以递归的拷贝和删除目录。
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
;;滚轮支持
(setq mouse-wheel-mode t)
;一个加强的 buffer 列表模式
(require 'ibuffer)
(global-set-key (kbd "C-x C-b") 'ibuffer)
;浏览剪贴板中的内容,绑定到 'C-c k'.
(require 'browse-kill-ring)
(global-set-key [(control c)(k)] 'browse-kill-ring)
(browse-kill-ring-default-keybindings)
;ido mode. 超强的buffer切换工具, Emacs 也有通常编辑器的那种在 Tab 中选择
;buffer 的 mode,但是用了ido 以后,我再也不需要他它了,ido mode 是我见过最
;方便的 buffer 切换模式。
(require 'ido)
(ido-mode t)
;极强的自动补全,帮定到 M-/ 上面了。基本就是,你编辑了一段时间以后,只要输
;入字符串的前几个字符,按一下 M-/ ,就会补全后面的,多按几次可以选择。补全
;的原则是"就近选择",试试就知道了,多数情况都让人满意。
(global-set-key [(meta ?/)] 'hippie-expand)
(setq hippie-expand-try-functions-list
'(try-expand-dabbrev
try-expand-dabbrev-visible
try-expand-dabbrev-all-buffers
try-expand-dabbrev-from-kill
try-complete-file-name-partially
try-complete-file-name
try-expand-all-abbrevs
try-expand-list
try-expand-line
try-complete-lisp-symbol-partially
try-complete-lisp-symbol))
;设置日历表的中文天干地支,在日期上按 `p C' 就可以显示农历和干支。
(setq chinese-calendar-celestial-stem
["甲" "乙" "丙" "丁" "戊" "已" "庚" "辛" "壬" "癸"])
(setq chinese-calendar-terrestrial-branch
["子" "丑" "寅" "卯" "辰" "巳" "午" "未" "申" "酉" "戌" "亥"])
;设置你所在地方的经度纬度,在日历中就可以查看日出日落时间。
(setq calendar-latitude 30.15)
(setq calendar-longitude 120.10)
(setq calendar-location-name "Somewhere")
;记住上次编辑的文件,这样你下次进入Emacs 的时候,就会直接打开上次编辑的东西
;就和没退出过一样。建议,把这个设置放在配置文件的最末尾!
(require 'desktop)
(desktop-save-mode t)
(desktop-read)
基本的设置就到这里,有兴趣的话,就继续往下看。
6. 开始学习 Emacs 的学习过程是充满挑战和快乐的。也许没有你原来想象的那么恐怖
。Emacs 自带了一个入门的 Tutorial 就是最好的入门教材。如果你有兴趣继续学习
Emacs,学习这个 Tutorial 是必须的,下面教你如何查看它。
1. 直接从菜单 Help->Emacs Tutorial
2. 如果你下载的是 CVS Emacs,就更好了,已经有一份中文的版本。
Type:
C-u C-h t TAB
选择中文版本
如果是 21.3,恐怕就要耐性子读英文了,直接 C-h t 打
开它。
这个 Tutorial 是交互式的,看起来很轻松,耐心的把它看完,你就是一个准 Emacs
User 了。
三. Emacs 相关资源。
1. 遇到问题去哪里?
假设你已经看完了那个不太长的 Tutorial, 大概你就会发现我其实是个大菜鸟。所
以接下来的事情就需要你自己去提高自己的水平了。给出几个有用的相关网址。如
果你发现更好的,记得告诉我。
1) 王垠的主页上关于 Emacs 的介绍,我就是看它入门的。
http://learn.tsinghua.edu.cn/homepa...5450/emacs.html
尤其是里面关于一些很有用的扩展 mode 的介绍。
http://learn.tsinghua.edu.cn/homepa...macs_elisp.html
2) 哈工大一个 Emacs 牛牛的主页。
http://211.93.34.108/people/WangChunyu/interests/emacs
我在里面最大的收获,是学会了使用 Gnus,如果你想用
Emacs 处理邮件和浏览新闻组,一定要先看看它。
http://211.93.34.108/people/WangChu...s-faq-cn_1.html
3) 水木清华 BBS 的 Emacs 版。
国内很多 Emacs 用户都集中在这里,经常有高手出没,如果以上的静态信息不能
满足你的要求,可以去这里寻求帮助。不过在发问之前,最好看看精华区和搜索
一下版面。即节省别人的时间,更节省你自己的时间。
http://www.smth.org/
4) Emacs 的 Usenet 和 Mail list
http://www.gnu.org/software/emacs/emacs.html#HelpUsenet
这里基本就是 Emacs 的老巢了,来自全世界的用户都在这里讨论问题。个人感觉
,往往在这里得到答案是最快的。Emacs 的开发者也在上面,所以往往会得到最
专业的回答。
5) Windows 下用户特别要看看的, Windows 版本的 FAQ (必看)
http://www.gnu.org/software/emacs/windows/ntemacs.html
这里搜集了大部分已知的 Windows 下 Emacs 特有的问题,事实上我上面的很多设
置,就是从这里找的。
2. 去哪里下载 Emacs 的扩展和配置文件?
我只去这一个地方
http://www.emacswiki.org
只要在上面 search 一下你想要找的东西,很快就会找到。如果你看过上一节的
那几个主页,应该已经知道这个网站了。
3. Emacs 太有意思了,我想成为 Emacs 专家!
有这种想法真是太好了,Emacs 正需要这样“热情”的用户。不过我在这里先引用一
句有点丧气的话:“学习 Emacs 要相信有来世,因为你一生也无法掌
握它的全部。”无论如何,欢迎你进入 elisp 的精彩世界。elisp 是一个
全功能的 lisp 实现,lisp 是一种优美而强大的语言,功能上不弱于任何一种传统
的语言。语法的简洁优雅,更是C, C++, Perl 这样的语言拍马难追的。lisp 的缺点
也是显而易见的, 作为一种典型的脚本语言, 它的速度无法和 C 匹敌, 现在计算机
的硬件体系就不是很适合 lisp 程序,所以 Emacs 的底层代码是用 C 写的。当然,
快慢是相对的,作为文本编辑器的脚本语言,它的速度是足够了,而且现在计算机的
速度和 lisp 诞生的年代无法同日而语,足以弥补 lisp 在速度上的缺陷。
1) Emacs 编程入门。
只推荐一份资料,这是我看过所有 elisp 编程的书籍里最轻松的一本。
http://www.gnu.org/software/emacs/emacs-lisp-intro/
强烈推荐下载 info 格式的文档, 然后在 Emacs 的 info 模式下阅读它,这样就可
以直接在 Emacs 里交互执行教程中的示范代码。
如果你下载的是 CVS Emacs, 这个教程已经包含在里面了,把下面这个语句复制到
Emacs 的某个 buffer 里。
(info "eintr")
光标移动到后一个括号后面,按下 C-x C-e。当然,也可以
从菜单 Help->More Manuals 里找到它。
如果是标准的 21.3 版本,可能需要手动安装这个文件。
安装 info 文件的方法 (通用):
把 emacs-lisp-intro.info.gz 下载回来以后,解压缩得到一
个 .info 文件,放到某个目录里,假设是 d:/emacs-info
把下面这个语句加入到 .emacs(_emacs) 文件中
(require 'info)
(add-to-list 'Info-default-directory-list "d:/emacs-info")
进入 Emacs 后, M-x info 就可以在目录中找到它了。
2) Emacs 编程提高
elisp 最权威的手册,就是 The Emacs Lisp Reference Manual
可以在这里下载。
http://www.gnu.org/software/emacs/e...nual/elisp.html
同样,CVS Emacs 已经包括进去了,用同样的方法可以找到它。
值得注意的是,这是一本非常详尽的 elisp 使用手册(pdf 的版本有 8xx 页)
,而不是教程,如果你初次学习 elisp,先看上一本。
四. 学习心得体会
其实 Emacs 不需要你去“学习”它,只要直接用就能在不知不觉中熟练掌握它。
这得益于 Emacs 及其强大的帮助系统。如最开始的描述的一样,Emacs 是一个
self-documenting 的软件。
它的帮助系统及其完善,我用过的软件中,只有 Visual Studio + MSDN 那样的帮
助系统才能与其媲美,所不同的是,Emacs 帮助系统是说明自身的,VS 的帮助系
统是整个开发环境的。至于那种最常见的几个 chm 文档的帮助文件,和 Emacs
的帮助系统是没有可比性的。
丛 Help 菜单上,可以找到最基本的一些帮助信息,当然,只用这个远远达不到我
刚才吹嘘的功能。
前面忘了提一点,在与 Emacs 交互的过程中,90% 以上的情况都能
使用 TAB 补全,输入前几个字母,拍两下 TAB,就会补全后面的东西。
这个功能极其方便,据说最早的 TAB 补全,就是 rms 写 Emacs 第一个版本的时
候发明的,从此以后被无数的程序所采用。
下面总结一下我使用过程中最常用的一些方法
1) Emacs 帮助按键,都以 C-h (help) 为前缀,按下
C-h ? 可以得到一个完整的列表。
2) 我想做一件事情,但是不知道如何去做?
输入
M-x apropos
然后按照提示,输入关键字甚至是正则表达式,就会搜索 Emacs 中一切相关
的信息。会得到一个列表,每一项都有超链接和简要的说明,寻找你感兴趣的
东西吧。这是一个最常用的功能,可以把它当成 Emacs 中的 Google 。
3) 别人告诉我一个快捷键,我想知道它具体是怎么回事?
C-h k (key)
然后把那个快捷键按一遍,就会告诉你这个快捷键是怎么回事了。
4) 如何察看一个命令的具体情况?
C-h f (function)
然后输入你要查询的命令,Emacs 的“命令”,实际都是一些交互性的函数,
所谓“交互性”就是指直接与用户交互,即按下 M-x 然后能输入的那些命令。
当然也有一些非交互性的函数,它们通常在完成一些比较底层的工作。在弹出
的帮助窗口中,有函数的详细说明,里面有很多超级链接,可以顺着链接察看
其它相关的函数,变量,察看实现这个函数的 elisp 代码,甚至最底层的 C
代码!
5) 说到“函数”,就不能不说“变量”
C-h v (variable)
输入变量名,可以察看变量说明和当前的值。其帮助信息和函数类似。
6) Emacs 的 mode 好多,我想看看我当前的 mode 具体是怎样的?
C-h m (mode)
可以得到当前所有 mode 的一个总体说明,包括一些关键函数,变量,按键绑
定信息等等。
7) Emacs 的快捷键真多,我想看看当前可用的快捷键都有什么?
C-h b (binding)
当前所有快捷键的列表。
基本我常用的就这些,Emacs 的帮助系统自成一体,以上几个部分都不是孤立的,
包含了无数的交叉索引信息,很容易顺藤摸瓜找到最终你想要的东西,上万个函数
,变量被组织的有条不紊,这才是Emacs 帮助系统的强大之处。多用几次,你就会
发现更多的东西。而做这一切的时候都不用离开 Emacs,想象一下,如果要你在
Emacs 和一个 chm 帮助文件之间来回切换,哪个方便?
五 Misc
1. Emacs 是高度可订制的,对新手来说,直接写 elisp 代码不容易,通常的做法是
把别人的配置文件直接 copy 过来用,这没什么丢人的,Emacs 提倡你这样做。
如果想自己动手设置一些东西
M-x customize TAB
看看自动补全的内容,这些都是一些订制 Emacs 的命令。会出现一个类似
GUI 的自定义 buffer。常用的有 customize-group。
如果你是第一次用 Emacs,会觉得Emacs 的自订制界面让人耳目一新。
2. 如果需要一个 pp 的配色方案,可以去找一个叫
colorthemes.el 的扩展, 里面有很多漂亮的配色方案,推荐
dark blue2 或者 deep blue。
3. Emacs 中自带了一堆有趣的小游戏
M-x doctor
一个心理医生模拟程序,和它聊天吧,当然只能用英文。
M-x gomoku
五子棋,它总是能赢我,因为我是个五子棋盲。以上都是人工智能的产物,这
没什么奇怪的,lisp 最初就用于人工智能。
M-x zone
当一段时间没有键盘操作,就启动一个类似屏保的东西。
M-x tetris
俄罗斯方块........
还有其它的,自己在菜单 Tools->Games 里面找吧。
六 特别说明
通常来说,编辑器的选择和信仰一样,很容易引起口水大战。所以我在文中尽量避免
评价别的编辑器,至少不说它们的坏话。如果有其它编辑器的 zealot 觉得文中哪个
地方不爽,可以向我指出,我会酌情修改的。总之,不希望看到无聊的网络辩论会。
来自:https://dream4ever.org/showthread.php?s=bdc7220ab80469d04a724a4f47063d4e&t=9991
源地址还有配置文件的代码