(转载)不完全解读 Emacs 编辑器—自由软件的旗舰

转载:不完全解读 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
源地址还有配置文件的代码

 

你可能感兴趣的:((转载)不完全解读 Emacs 编辑器—自由软件的旗舰)