Emacs 零海拔入门
Emacs Now!长期以来,我对瑞士军刀式的工具心有独钟。虽然长期使用的是Windows上各种身形庞大的破解版IDE,却一直对Emacs/VIM心向往之。自从在工作中介入Python,就有意的开始学习Emacs的使用。从去年起,适逢GNU Emacs 23浮出水面,困扰已久的中文问题基本上成为历史了,于是,我便开始大力转向Emacs。现在,应该说学习和使用Emacs已经不再像前几年那样麻烦,对Emacs抱有兴趣,又心生向往的同学,现在可以考虑向宝山进发了。 地图与旅游手册
去一个陌生地方旅游时,你需要在出发前读一下旅游手册,看一看地图。在学习Emacs之前,也有一些内容需要你先了解一下。
可能会困扰你,但应该接受的
Emacs 是一个通用编辑器,一个非常古老的编辑器,甚至比现在你见到的很多操作系统(及发行版)都要古老的多。所以,它有一些操作习惯,会令你感到不适应。然而,如果你坚持下去,会有收获的。
Emacs 发展了数十年,积累了大量的技术资源,数量之大,质量之高,是很多新潮工具难以望其项背的。需知编码工作的本质是文本编辑。Emacs 在文本编辑方面的积累,比我们的年龄更长,所以,在Emacs不能满足你的时候,请先搜索教程,看看是否你漏过了什么操作要点。如果确信Emacs中没有这个内置功能,请搜索相关的mode。
Emacs 有着方便的扩展和定制机制,然而它使用的Emacs Lisp语言,作为一种Lisp的变种,可能是你从来没有见过的。然而尽管它的样子看起来古怪,却是一种非常值得学习,也非常好用的语言,不妨一试。
Emacs是一个高度可扩展的环境。你在学习它的同时,也应该不断的改变它,使你们相互磨合。这是一个有趣的体验过程。
Emacs 有若干实现版本,其中影响最大的是GNU Emacs。出于中文支持的考虑,后面的内容以GNU Emacs 23为准,
插件与配置
Emacs的插件,被称为mode。首先emacs有着优秀的可扩展性,使用elisp可以编写它的插件。事实上几十年来积累的开源插件足以满足大多数的需求。很多时候,定制Emacs就是寻找适合的插件。在后面,我也会以一些常用的插件介绍为主。
快捷键
Emacs 中定义了大量的快捷键,各种插件也经常会定义自己的快捷键。在Emacs的文档中,通常会使用一种简短的方式来介绍快捷键:
[*]大写 C 表示 Control 键
[*]大写 M 表示 Alt 键 -- 它的出处在于有些机器的键盘上会有称为Meta的功能键。
[*]同时按下若干键时,用 - 号表示分隔,如 C-f 表示同时按下 Control 和 f 键。
[*]按键有先后时,用空格分隔,如C-x f,表示同时按下 Control 和 x,然后松开,再按下 f。
Emacs 安装
GNU Emacs 目前正在经历一次变革,除了正式发布的21版、正在Beta阶段的22版,还并行开发了Emacs的Unicode内核版:GNU Emacs 23。这个版本解决了困扰我很久的“半个中文字符”的问题,我也是因此才欣然使用GNU Emacs。
目前Emacs 23还处于Alpha阶段,但是实际上已经非常可靠,我一直在使用这个版本。Windows用户可以到 [http://ntemacs.sourceforge.net] 下载编译好的版本,Ubuntu 用户可以将以下的源添加到软件源列表中:
deb http://ppa.launchpad.net/avassalotti/ubuntu RELEASE main
deb-src http://ppa.launchpad.net/avassalotti/ubuntu RELEASE main金山内部,可以直接从我们自己的内部镜像取到这个版本。
当然,如果你喜欢,也可以从GNU的CVS站签出源码,自己编译,这是一个漫长的过程,不过对于一个Hacker,也是个不错的学习机会。网上有大量的文章介绍如何编译emacs,这里就不多介绍了。需要注意的是,大多数关于编码的配置介绍,对于GNU Emacs 23的用户都可以置之不理,基本上我们只需要关注这样几个主要步骤:
安装CVS
安装GCC
sudo apt-get build-dep emacs21 (注:这是一个取巧的办法,通过build-dep尽可能的获取依赖的包)
./configure
make install
观察错误提示,查阅网上资料,安装缺少的包,重复上一步骤以至成功…… Emacs 与文本编辑
打开/新建文件
打开 Emacs 后,我们做的第一件事,往往是打开一个(新)文件进行操作。在Emacs中,打开文件的快捷键是C-x f。需要注意的是,Emacs并不像普通的文本编辑器那样,区分打开现有文件和新建文件,而是依据这样的规则:
打开文件时,实际上是在Emacs中打开一个同名的缓冲区(buffer)。
如果硬盘上存在这个文件,就把其内容读入缓冲区。
保存时,如果该文件不存在,就新建一个,否则覆盖。
前面我们提到了缓冲区。这是一种重要的概念,不过暂时我们可以把它视为Emacs中管理的一块数据内容。通常它会对应可见的文本编辑区。实际上,我们可以直接新建一个不对应任何文件的缓冲区,后面我们会讨论到。
关闭缓冲区
当然,直接把Emacs关掉,你就关掉了所有的缓冲区。不过,我们通常需要的是关掉当前的缓冲区。它的快捷键是 C-x k。需要注意的是,如果缓中区有未保存的数据,会提示你,注意看提示:)。
保存文件
保存文件的快捷键是 C-x s。如果需要另存到一个指定的文件,使用C-x w。
文本编辑的基本操作
会有一些教材告诉你一些很神奇的快捷键,比如C-p是光标上移什么的。它们为Emacs提供了最大可能的兼容性。即使一些紧凑的,只有82键的键盘上,熟练用户也可以使用自如。如果你在这样的环境下工作,不妨学习一下这类快捷键。
然而,实话说,这些快捷键我从来没有背下来过。对于我这样使用101键盘的用户,就直接使用方向键、翻页键这样的标准键来移动光标好了。删除之类的也一样。
然而还是有几个有用的快捷键值得记忆一下:
C-k 是删除光标向右直至行尾的内容,我惊讶的发现这个操作居然比我想象的常用的多。
C-del 是向右删除至单词末尾,对于中文,它是删除子句。
C-s 会进入搜索模式,后面我们会讨论一下搜索相关的操作。
所有被删除的内容会进入一个称为删除环的地方,按C-y就可以把它粘贴到光标所在的位置,如果想要取再前一次的删除数据,就在C-y之后(不要做其它操作!)继续按M-y,重复按M-y可以遍历整个删除环。
复制是 M-w,剪切是C-w,粘贴是C-y,切记!
C加左或右,可以整单词(或中文子句)跳转,Emacs有一整套完整的文本跳转快捷键,我也只记住了这么一个。
C-t 交换光标所在字符及其前一个字符的位置。说真的,我对这个快捷键很怨念,这得多么大的手才能一手按住这两个键啊……实事证明,两个字符写反了,是非常常见的事情,这样功能非常实用,生生就被这个组合快捷键给废了……
对于程序员,另有几个快捷键非常值得一记:
TAB,在编码使用的各种程序语言mode中,通常tab都是按设定的缩进格式对齐当前行。
M-/,代码自动完成。黑夜的自动完成并不算强,只是搜索当前已经出现过的子句,但是非常实用。
C-M-\,对当前选区重排,这个功能也经常会用到。
特别提一下M-x,这个组合是打开emacs最下面的mini-buffer。然后你可以在里面输入一行命令。通常这个命令就是一个emacs函数。一般写做M-x command,意思就是按下Alt-x,然后输入command,回车。
文本块的选取
通常我们在文本编辑器中都可以按住shift移动光标来选取文本,但是在emacs中不行。emacs使用一个称为“锚点”的概念。当你按下M-@时,就设定了一个锚点,光标和锚点之间,即为选取区域。只要不点击鼠标,不重设锚点,这个选取区就会一直随你的光标而变。
矩形剪切是C-x r k,矩形粘贴是C-x r y。矩形复制还没有找到:)。
常见编程语言支持
基本上你常用的编程语言,都已经有了内置的mode支持。你需要的只是M-x 语言名-mode。需要注意的是,shell脚本的编辑mode称为sh-mode。而perl常用的不是内置的perl-mode,是随perl源码发布的cperl-mode。
如果你像我一样有时候会用一些比较罕见的编程语言,可以在互联网上搜索“Emacs 语言 mode”(请将语言换为你想要emacs支持的语言),一般都能找到。如果你是debian/ubuntu用户,请先在软件源中搜索。
页:
[1]