ver. Draft 1.0 , Feb.8th,20070.为什么学习Emacs虽然早就耳闻Richard Stallman和Emacs的大名,但由于转入linux平台后选择编辑器时不习惯Emacs的C-x、M-x操作风格所以选择了Vim。有三个原因促使我决定开始学习Emacs:
1) SlickEdit 11.0.2在KUbuntu 6.10 Edgy下有一个Bug,在拖动Docking状态的bar时极易造成系统锁死(已解决);
2) 最近在看Eric Raymond的The Art of Unix Programming,其中ESR对Emacs有一句评价:"Emacs is ubdoubtedly the most powerful programmer's editor in existence."。我看了一下ECB效果,感觉确实比Vim的Taglist要强,这对我很有吸引力;
3) 二年级要开始写论文,而上学期Algorithm Design课程教材的LaTeX数学公式排版给我留下了极其深刻的印象,我决定花几天学习LaTex,而TeX的作者,超级牛力的Knuth教授使用的编辑器就是GNU Emacs.针对Emacs的LaTeX编辑也有一个很棒的preview插件auctex。
GNU官方网站上现在直接提供下载的是Emacs21稳定版,但Alpha状态的Emacs23提供了一些很棒的特性,比如对xft字体的支持(顺便说一下,我觉得目前最赏心悦目的编码界面是SlickEdit 11.0.2+DejaVu),所以决定CVS Emacs23Alpha的源代码,然后自己编译。
UbuntuChina.org.cn的论坛里有篇很不错的文章《Emacs23配置指南》(
http://forum.ubuntu.org.cn/viewtopic.php?t=18274),本文大部分内容都是参照这个贴子的,对有些部分作了一定修改。
1.CVS源码$sudo apt-get install ssh cvs (这个是为了到cvs上下载代码用的)
$sudo apt-get install texinfo (这个是为了方便后面的编译man包)
$export CVS_RSH="ssh"
$ cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/cvsroot/emacs co -r emacs-unicode-2 emacs
需要下载的代码总量大约90M,而且从我这里连接速度很慢,我居然花了5个小时。所以,请耐心等待。
2.编译和安装$sudo apt-get install build-essential (对大部分用户来说,很可能已经安装过了)
$sudo apt-get build-dep emacs21
$sudo apt-get install xserver-xorg-dev
$sudo apt-get install xorg-dev
$sudo apt-get install libncurses5
$sudo apt-get install libncurses5-dev
$sudo apt-get install libgtk2.0-dev
$./configure --prefix=/usr --with-x-toolkit=gtk
$make bootstrap
$make info
$sudo make install
3.配置中文字体我使用的启动命令和参数:
emacs --enable-font-backend --font "DejaVu Sans Mono-12"
当然如果习惯从Console启动可以alias一下,我是从katapult调Kmenu的内容,直接把启动参数写到Kmenu里了。如果不配置,英文显示非常完美,但中文显示不甚理想。
先安装一个truetype的中文字体,我选择了微软雅黑:
$cp msyh.ttf /usr/share/fonts/truetype
$fc-cache
修改配置文件~/.Xresources,在里面写入一行:
Emacs.FontBackend: xft
修改~/.emacs,写入以下内容:
;设置字体
(set-default-font "DejaVu Sans Mono-12")
(set-fontset-font (frame-parameter nil 'font)
'han '("Microsoft YaHei" . "unicode-bmp"))
4.其他常用配置选项$vim ~/.emacs
写入:
(setq default-major-mode 'text-mode);一打开就起用 text 模式。这一项我没有设置
(global-font-lock-mode t);语法高亮
(auto-image-file-mode t);打开图片显示功能
(fset 'yes-or-no-p 'y-or-n-p);以 y/n代表 yes/no
(column-number-mode t);显示列号
(show-paren-mode t);显示括号匹配
(display-time-mode 1);显示时间,格式如下
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(tool-bar-mode nil);去掉那个大大的工具栏
(scroll-bar-mode nil);去掉滚动条,因为可以使用鼠标滚轮
(mouse-avoidance-mode 'animate);光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线。
(setq mouse-yank-at-point t);支持中键粘贴
(transient-mark-mode t);
(setq x-select-enable-clipboard t);支持emacs和外部程序的粘贴
(setq frame-title-format "houdini@%b");在标题栏提示你目前在什么位置,把houdini改成自己的用户名
(setq default-fill-column 80);默认显示 80列就换行
5.安装开发组件CEDETCEDET的官方网站在 http://cedet.sourceforge.net,CEDET表示Collection of Emacs Development Environment,它集成的speedbar,eieio,semantic等插件在编程的时候非常有用。
先下载 cedet-1.0beta3b.tar.gz,然后解压到~/myEmacs下,进入该目录,make之:
/home/houdini/myEmacs/cedet-1.0beta3b$make
在.emacs中加入以下内容:
;cedet开发插件
(add-hook 'texinfo-mode-hook (lambda () (require 'sb-texinfo)))
(load-file "/home/houdini/myEmacs/cedet-1.0beta3b/common/cedet.el")
(semantic-load-enable-code-helpers)
(autoload 'speedbar-frame-mode "speedbar" "Popup a speedbar frame" t)
(autoload 'speedbar-get-focus "speedbar" "Jump to speedbar frame" t)
(define-key-after (lookup-key global-map [menu-bar tools])
[speedbar]
'("Speedbar" .
speedbar-frame-mode)
[calendar])
6.安装ECBECB是Emacs Code Browser的缩写。
下载ecb-2.32.zip后,解压到~/myEmacs下;
修改.emacs,添加以下行:
;ecb: Emacs Code Browser
(add-to-list 'load-path "/home/houdini/myEmacs/ecb-2.32")
(require 'ecb)
7.安装TEX插件auctex(在此之前已经安装了texmacs,sudo apt-get install texmacs)
先到官方网站下载auctex-11.84.tar.gz,解压到~/myEmacs目录,进入auctex所在目录;
/home/houdini/myEmacs/auctex-11.84/$./configure
/home/houdini/myEmacs/auctex-11.84/$make
/home/houdini/myEmacs/auctex-11.84/$sudo make install
修改.emacs,加入:
;auctex
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(add-hook 'LaTeX-mode-hook 'LaTeX-install-toolbar)
(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
8.安装其他插件8.1 color-theme.el提供了70种配色样式
下载color-theme.el,放到~/myEmacs下,修改.emacs,加入:
;配色方案
(load-file "/home/houdini/myEmacs/color-theme.el")
(color-theme-Dark-Blue);选择 darkblue的配色方案
选择Tools>Color Themes,这时出现一个 buffer在其中有颜色列表的名字,在相应的颜色上回车就可以预览这种配色方案,如果喜欢的话,就可把这种方案加入到 .emacs中,替换 darkblue这部分,有空格的中间用短横线连起来。
8.2 tabbar.pl为打开的缓冲区生成tab
下载tabbar.pl,放到~/myEmacs下,修改.emacs,加入:
;tabbar
(load-file "/home/houdini/myEmacs/tabbar.el")
(require 'tabbar)
(tabbar-mode)
;(global-set-key (kbd "C-=") 'tabbar-backward-group);;这几句的目的是绑定快捷键这样可以直接用快捷键操作
;(global-set-key (kbd "C--") 'tabbar-forward-group);;不过没有发现有很大用处,所以注释了。
(global-set-key (kbd "C-0") 'tabbar-backward)
(global-set-key (kbd "C-9") 'tabbar-forward)
8.3 如果愿意,Emac还可以干很多事,比如听音乐、收发email、上newsgroup……一个流传已久的说法是:Emacs其实是个操作系统,它只是恰巧可以用来编辑文件。我觉得PG每场能抢5个以上的篮板固然不是什么坏事,但RB这种活还是尽可能让C和PF去干吧。
9.进一步学习Eric Raymond推荐的是Learning GNU Emacs[Cameron]和Programming With GNU Software[Loukides&Oram].