Emacs入门
By Paul Anderson 翻译gaia
Emacs本质上是个相当难用的程序.甚至很少有人能知道如何从Emacs退出,更别说怎么使用了.在这篇文章里我不准备介绍设置emacs的方法,因为那是一项我也没能掌握的高超技术.
我假设你已经安装了emacs.在命令提示符下,键入:
emacs
Emacs将启动并出现scratch缓冲区,scratch缓冲区仅仅用于写入一些不打算保存的东西.所以我们必须在启动emacs时从命令行给它一个文件名.要做到这一点,我窍纫顺鰁macs(当然也可以按C-x C-f,再输入文件名,创建一个与文件相关联的缓冲区).按C-xC-c(按住CTRL键,然后按x接着按c),就可以退出了.现在,我们启动 emacs并带一个文件名:
emacs bork.txt
屏幕看起来是这个样子:
Buffers Files Tools Edit Search Mule Help
----:---F1 bork.txt (Text)--L1--All-----------------------------------
(New file)
现在来看看位于底部的状态栏.它显示了我们要处理的文件名,告诉我们使用的是Text模式(关于emacs的模式后面有更多的介绍),现在位于第恍?并且整个文件都被显示了.下面的例子是我屏幕上的状态栏,看看当编辑一个有内容的文件时是什么样子:
----:**-F1 emacs.html(HTML)--L59--70%----------------------------------
两个*号表示,自从我上次保存,文件已被改动过了;我编辑的文件叫 emacs.html,emacs在使用其HTML模式;光标位于59行,目前位置是文件总长的 70%.现在向空文件bork.txt输入一些文字,注意**号及行数.现在保存你的大作!按 C-xC-s(就是按下CTRL,然后按x接着按s).这时底部会出现
Wrote /home/paul/bork.txt
你已经保存了你的作品!我们退出emacs并在重新启动它时带上我们的文本文件名.你可以确认文件已经被保存.以上就是你和emacs打交道所需的最基本知识,现在继续前进...
--------------------------------------------------------------------------------
一些特殊模式
Emacs带有一个内建的LISP语言解释器,所以可以通过对emacs编程完成各种各样的任务.这使它能恰当地处理HTML,SGML,shell脚本,C代码,texinfo和TeX源文件 ,等等.对一个可编程计算器常做的事情就是为它们写游戏,这也差不多就是对一个像emacs这样的可编程文本编辑器所要做的.emacs有一个LISP版的Eliza,这是一个经典的仿人工智能程序.在这里它被设计成一个心理分析家.我们以下的内容需要一点小技巧,因为运行这些模式的标准键叫\"Meta\"键.PC没有专门的Meta键,所以通常被映射到某一个ALT键或CTRL键.(按一下ESC键也会起到M-的作用,在我的机器上X下的emacs把win95键映射成了Meta--译者注).按M-x,先试试左右ALT键,然后试试左右 CTRL键,当你按了正确的键时,底部显示栏将出现M-x,后面是光标.现在键入doctor ,按enter.你的屏幕上将出现如下文字:
I am the psychotherapist. Please, describe your problems. Each time
you are finished talking, type RET twice.
接下去你可以和医生聊一会儿.还是挺有趣的...
这么快就回来了?确实,聊上一段时间就会觉得乏味...既然你已经回来了,我们将写一些C代码,来看看使用emacs的好处.我想让你启动emacs,编辑~/.emacs文件.
在这个文件里写入下面内容:
(add-hook \c-mode-common-hook
\(lambda () (c-toggle-auto-state 1)))
第一眼看上去似乎不知所云.这实际就是LISP代码.看到它们你就会明白为什么有人嘲笑地说LISP的意思就是\"许多恼人的,多余的括号\"(Lots of Irritating Superfluous Parentheses. ).幸运的是你现在还不必学习 LISP,尽管要对emacs做大量设置工作时你必须要学(上面这几行的意思也很简单,当emacs切换到C模式时,将执行c-mode-common-hook这个hook变量所规定要执行的一系列函数,add-hook把一个新函数加入这个hook,这样当emacs使用C模式时,执行(c-toggle-auto-state 1),能在你输入程序时,把换行符自动插在括号,分?冒号等特殊字符的后面.Emacs在编辑以.c结尾的文件时会自动使用C模式,也可以用M-x加模式名切换到指定模式--译者注).保存这个文件,然后启动emacs编辑一个叫 foo.c的文件
输入以下内容:
#include
main(){printf(\"\\nHello.\\n\");}
和在这里看到的不太一样,对吗?注意一下emacs是如何自动地在合适的位置缩进编排代码,并且提醒你括号的匹配.如果你不用C编程,你将体会不到这有多棒(进入C模式后,按C-h 再按m,将出现对当前模式的描述和一系列有用的快捷键.您 可以发现按C-c C-a同样可以启动c-toggle-auto-state,其标志就是在状态栏中出现 (C/a)--译者注).相信我,如果你需要写大量代码,它正是你想要的!
Emacs为HTML,SGML,甚至纯文本都有类似的相应模式.它可以读e-mail,news,浏览 web.Emacs包罗万象,各种工具一应俱全.阅读一下文档,使用它,逐渐地emacs就会在你手中发挥出它的全部威力.
更多的信息:
按C-h t,阅读emacs自带的联机教程
按C-h i,阅读info文件
按C-h F,看看emacs的FAQ
希望这些对你有用,
--Paul Anderson, [email protected]发布人:netbull 来自:Linux公报