emacs教程中文手册,emacs使用方法
Emacs入门指南-51CTO。计算机输出缩微胶片
Emacs简介2005-10-09 14:57 qdxingq的博客我要评论(0)字号:T T关于Emacs的争论从来没有停止过。有人坚持认为Emacs是巨大的史前生物,也有人坚持认为Emacs是上帝创造的万能工具。简而言之,一切都围绕着它的复杂性。广告:
关于Emacs的争论从来没有停止过。有人坚持认为Emacs是巨大的史前生物,也有人坚持认为Emacs是上帝创造的万能工具。简而言之,一切都围绕着它的复杂性。
毫无疑问Emacs作为文本编辑器真的太大了(超过70兆!)。但如果把Emacs当成一个环境(确实是环境),那就是优秀,70兆的体积不算什么。作为一个普通用户,我不建议你用Emacs,vi也可以——但我不是贬低vi。相反,vi也是一个我们尊敬的优秀编辑器——它将复杂性隐藏在幕后,通过各种命令来实现,这些命令我们可能永远也用不到,所以我们不必关注它。它是一个小巧、简洁、直观的文本编辑器。但如果你是程序员或者系统管理员,你在乎的不是华丽的界面,而是强大的功能和工作效率。而这就是Emacs能带给你的。平心而论,Emacs并不比我们平时用的其他编辑器难用多少,比如UltraEdit、TextPad、EmEditor等。只是我们在使用Emacs的时候,要重新适应Emacs定义的快捷键。正是这一点给很多尝过的人的眼睛蒙上了一层纱,他们造谣,宣扬Emacs的“复杂”。事实上,一旦你熟悉了它的快捷键,你就可以像使用其他软件一样感到舒适。
(如果你只是想写几句话,你会固执地坚持用Word吗?想写一个C/C程序,可以用Word吗?如果我是你,我宁愿用记事本。我刚接触电脑的时候,还在黑底白字的DOS时代。我对Turbo C中的IDE环境感到很惊讶,当时剪切粘贴的快捷键是Ctrl-Ins,Shift-Ins,Ctrl-y删除一行。直到现在,我还是忍不住想用Ctrl -y删除一行。其实统一软件快捷方式的不是MS,是WordPerfect。正是因为它的流行,后来的软件也纷纷效仿,增加亲和力。F1代表“帮助”,这是它使用的第一个。所以不要再抱怨Emacs的捷径了。Emacs在没有图形显示的终端环境下也能很好的工作,就像在X. UltraEdit中一样,好吗?)
废话少说,言归正传。我们的目标是定制我们的工作环境,使其最适合我们的工作。所以首先要明确一些概念。
缓冲区(缓冲器)
缓冲区的概念听起来很神秘,但它实际上是一个用来存储我们输入的内容的内存区域。你可以把它理解为一个文件。在Emacs中,一切都是在内存中完成的,在你按下C-x C-s保存之前,你的文件不会被更改。这是一种常见的文本保存策略,几乎所有的文本编辑器都是这样工作的。
窗口(框架)
窗口(框架)不是窗口,它是指显示您编辑的文本的区域。这类似于您在UltraEdit中打开的文件所在的小窗口。
模式(模式)
模式是Emacs中最重要的概念,Emacs的强大功能基本上都是由各种模式提供的。常用的有C/C模式、shell模式、Perl模式、SGML/HTML模式等等。
基于以上概念,我们一步步来研究Emacs的IDE环境。
1.文件、缓冲区和窗口
首先,我们可以在Emacs中同时编辑多个文件。您可以随时使用C-x C-f来打开(或创建)文件。但是默认情况下,编辑器会自动进入新文件窗口(所有编辑器都是这样)。如果我们想同时看到两个文件(例如,比较两个文件),我们必须首先分割窗口。使用C-x 2水平分割窗口。分割后,你会失望地发现两个窗口中的内容完全一样(包括你对其中一个窗口的修改,都会同时显示在另一个窗口中)!是的,我们只是拆分了窗口,但没有切换缓冲区,所以我们仍然显示原始缓冲区的内容。用C-x o切换到你要去的窗口,然后在缓冲区列表(C-x C-b)中选择目标文件。这样,您可以在同一个屏幕的末尾查看两个文件。
你也可以用C-x 3把屏幕垂直分成左右两个区域。理论上,窗口可以无限划分,只要你觉得划分这么多小窗口有意义(试试吧,连Emacs都会觉得你这么做很蠢)。所以你完全可以把屏幕分成一个倒“Pin”形,依次按C-x 2和C-x 3就可以了。
窗口和缓冲区的概念完全不同,我们可以“关闭”窗口而不是“关闭”缓冲区,让它暂时从我们的视线中消失。这相当于图形环境中的“最小化窗口”。使用C-x 0关闭当前窗口,使用C-x 1关闭除当前窗口以外的其他窗口。
下表直观地显示了窗口和缓冲区的键盘操作:
-
车窗操作:
功能键功能
C-x 0删除当前窗口,对缓冲区没有影响。注意,这是数字0。(最小化当前窗口)
C-x 1删除除当前窗口之外的所有窗口,这对缓冲区没有影响。(最小化其他窗口)
C-x 2水平分割当前窗口。
C-x 3垂直分割当前窗口。
切换窗口(当且仅当存在多个窗口时)。注意这里的字母o。
缓冲操作:
功能键功能
C-x C-f打开(创建)文件并创建一个新的缓冲区。
将当前的缓冲区保存到一个文件中。
将当前缓冲区保存到另一个文件(另存为)。
C-x k关闭当前缓冲区。
缓冲列表。您可以使用箭头键选择要切换的缓冲区。
C-x C-c关闭所有缓冲区并退出Emacs。
-
2.方式
接下来,我们来看看Emacs中的模式。
在Emacs中,无论何时编辑文件,都应该使用特定的模式。Emacs中的“模式”不同于vi中的“模式”。vi中有两种模式:命令模式和编辑模式,而Emacs中只有一种模式,即编辑模式,Emacs中的所有命令都是由功能键完成的。但我说的“模式”不是指这个模式,而是Emacs中的各种辅助环境。当我们编辑普通文本时,我们使用“Txt模式”,而当我们编写程序时,比如前面的Bash脚本,我们使用“Shell(bash)模式”。
当我们启动一个文件时,Emacs会判断文件的类型,并自动选择相应的模式。当然,我们也可以手动启动各种模式。先按M-x,然后输入图案的名称。比如启动“C模式”就是M-x c模式。直接按M-x,再按两次Tab,就会得到所有可执行的命令,当然也包括所有的模式。因此,如果您不记得命令的名称,请使用此方法。
2.1、c模式
在功能强大的C模式下,我们拥有自动缩进、批注、预处理扩展、自动状态等强大的功能。
当我们在“C模式”下编辑代码时,可以用Tab键自动缩进当前行的代码,使代码结构清晰美观。我们也可以指定缩进的规则。Emacs支持的缩进规则有:bsd、cc-mode、ellemtel、gnu、java、k r、linux、python、stroustrup、user、whitesmith,由M-x c-set-style命令指定。
为了具有可读性,源代码必须有好的注释。使用m-;您可以生成右缩进的注释。C模式下是“/* comments */”的形式,C模式下是“//comments”的形式。当我们突出显示文本的某一段并按下C-C-C时,我们可以将其注释掉。
Emacs可以使用C对其运行代码的一部分进行预处理,这样程序员就可以检查宏、条件编译和include语句的效果。例如,设想以下情况:
1.输入您在顶部窗口看到的代码。
2.突出显示一个区域。
3.按C-c C-e呼叫宏分机。您也可以从菜单C中选择宏展开区域.
Emacs将创建一个spy热窗口,显示宏展开的结果。
Emacs中的C环境也有很多特性,可以帮助程序员加快开发过程。当运行在自动状态时,当程序员输入代码时,C环境会自动插入新行,处理缩进并完成其他相关任务。很多情况下,编程时不需要按回车键,系统会自动处理。
按C-c C-a或运行M-x c-toggle-auto-stat启动自动模式。在这种模式下敲击键盘时,程序员会注意到,每当输入一个分号,编辑器就会自动将光标定位到下一行,并自动缩进。最终代码看起来好像没有使用自动模式;它只是减少了程序员创建文件和敲击键盘的次数。
要关闭自动模式,只需按C-c C-a或运行M-x c-toggle-auto-state,系统将返回正常状态。
2.2.编译程序
Emacs允许程序员在Emacs环境下编译自己的软件。这样做时,编辑器将编译器的输出与程序代码连接起来。这意味着程序员可以通过单击错误的命令(按Enter)立即找到这些警告和错误消息。
您可以在“工具”菜单中找到这些选项。当您从菜单中选择编译时,Emacs需要一个编译命令。如果有Make文件,您可以接受默认设置。否则,程序员必须填写编译命令行,才能正确编译程序。
如果在编译过程中遇到错误或警告,Emacs将在一个单独的窗口中显示它们。
此时用Enter点击错误信息,可以直接跳转到错误发生的源代码。有时,输出窗口中会出现数百条警告消息;直接跳到错误的地方,可以节省很多时间。
正如您所看到的,默认的编辑命令是一个调用。Emacs可以完美使用make,处理大量文件,完全不用担心Emacs能否支持大型工程项目。
2.3、调试
许多集成开发环境都提供了调试器。虽然大部分只是有限的调试器,但Emacs为gdb调试器提供了一个全功能的借口。
在Emacs中使用gdb时,程序员可以在以任何其他方式运行时获得gdb的所有标准特性。但是它仍然包括通过接口增强获得的一些其他性能。
使用Emacs中的gdb调试器,您可以从头到尾观察您的代码是如何运行的。这个选项比默认的gdb操作更容易使用,默认的gdb操作只是显示的指令。
此外,由于调试器在缓冲区中运行的代码可以直接在Emacs中重新编译,因此在调试器中更改、重新编译和运行代码是一种简单的方法。
要在Emacs中调用调试器,请在Tools菜单中选择gdb,系统会提示您输入用于调试的可执行文件。输入名称时,调用gdb。您最初会看到与标准gdb相同的窗口。在程序中适当的地方设置断点后运行程序,指向断点的代码会在源代码窗口中用=标记并高亮显示。gdb窗口将不再显示代码。
在gdb窗口中,你可以使用所有常用的gdb命令。在Emacs中使用gdb时,程序员必须学习任何新命令。
2.4.使用标记
Emacs的另一个强大功能是使用标签的能力。根据标签,编辑器可以区分哪些文件属于同一个项目。更重要的是,标签还可以准确地指示每个文件包含的内容。例如,在C程序中,标签表示文件包含特定的函数。编译文件时,可以直接跳转到任意函数所在的——,不考虑文件的路径。此外,您可以对一组文件使用命令,而不仅仅是当前文件。例如,搜索命令可以处理一组文件。
为了提供这个功能,Emacs需要分析文件并保存要使用的标签信息。一般来说,用一个叫TAGS的文件来实现这个功能。在命令行上运行etags程序来创建这个文件,并给它一个需要索引的文件名。例如:$etags *。c
ETA程序分析源代码并生成etags文件,供以后在Emacs中使用。
现在,您可以使用工具菜单中的标签选项来操作文件。您可以使用Find标记(M-。)来看看到底发生了什么。比如输入函数名,Emacs会直接跳转到包含该函数的文件,必要时打开文件,将光标定位在函数的第一行;如果这个函数出现在多个文件中,可以使用M-继续搜索其他文件。
3.在Emacs中使用Shell
Emacs的独特之处在于它可以在内部运行shell。Emacs里的外壳和普通外壳没什么区别。我们编写的shell脚本可以在不退出Emacs的情况下直接运行测试。但是在Emacs的shell环境下,一些需要控制控制台的程序,比如mc,是无法运行的。我们可以使用$ term模式,只需运行M-x term-mode命令。
之前我们已经在Emacs中体验过外壳了,就不赘述了。
4.其他的,但不是鸡肋
Emacs集成了Web浏览器、邮件阅读器、ftp、telnet、新闻组阅读器、版本控制系统等。太多了,在这里就不能一一说了。学习Emacs最好的方法就是“练习看书”,我就是这样学习Emacs的。感受多了,就能成为Emacs大师。征服Emacs并不是“不可能完成的任务”。
5.累了,打游戏。
F10-工具-游戏,玩得开心。我们的目标是劳逸结合。