Board logo

标题: 生活在 Emacs 中-简短的深入学习 [打印本页]

作者: look_w    时间: 2018-4-19 14:41     标题: 生活在 Emacs 中-简短的深入学习

模式模式是在特定的内容类型的环境下 Emacs 特性的表达方法。也就是说,缩进的表现在 C 源代码文件和在 HTML 文件中是不同的,在给您的老板的信中的表现也是不同的。每个缓冲区的主要模式显示在状态行上缓冲区名字的右边的括弧中。
有两种不同的模式类型:主要和次要。每次只有一个主要模式被激活,但它们修改次要模式的解释。例如,在大多数的代码编写中,缩进参照的仅是上一行。在 .txt 文档中按 Tab 键(文本模式已被自动调用),一个制表符被插入并显示为 8 列。
而在这个 XML 文档中,Emacs 缺省地调用 SGML 模式。在这里,按 Tab 键有效果的前提是上一行的开头有空格,在这种情况下,光标被放在上一行第一个不是空格的匹配的那一列,距离由空格字符填充,而不是一个制表符。
缩进表现是次要模式的一部分,它的活动由当前调用的主要模式来修改。模式还可以直接表现为语法突出显示的区别和文本被自动填充的方式的区别。
再谈模式主要模式通常由 Emacs 根据文件名或(有时)文件内容来正确设置。您可以明确地设置缓冲区的模式,方法是输入 M-x 加有效的模式名。
例如,如果我打开一个叫 bob.txt 的文件,缓冲区会以 text-mode 打开它。为了转入 c-mode,我输入 M-x c-mode。根据消息缓冲区,这实际上为我调用的是 cc-mode 并在状态栏上显示为 CAbbrev)。
列出 Emacs 自动识别的所有主要模式的方法是输入 M-x describe-variable,按 Enter,然后在小缓冲区的提示符后输入 auto-mode-alist。一些我常用的模式包括文本、c 和 SGML,有时还用 LISP。
编译代码看了模式列表后,您显然可在 Emacs 中做很多事。然而最重要的是,Emacs 是程序员的编辑器。在 Emacs 环境中,您可以编写代码、编译、调试和测试软件,还可以做其它事。在这里,我不准备讲所有的这些主题,但让我们假设我已用 C 语言写了一个典型的 Hello World 之类的程序。
当我输入该程序并把缓冲区存到磁盘上后,我输入 M-x compile,于是,在小缓冲区中出现这样的提示符:Compile command:,后面可能还有缺省值。我输入 gcc -o hello hello.c 并按 Enter。一个编译窗口被打开,它包含如下的文本:
1
2
3
4
cd /home/bilbrey/
gcc -o hello hello.c

Compilation finished at Sun Mar 17 16:18:55




为了查看我的程序能否运行,我从 Emacs 中运行它:M-! ~/hello。在小缓冲区中,我的输出是:“Hello, World!”
Emacs 和 LISPEmacs 这个名字有点象 Editor MACroS 的缩写。所以,Emacs 中的另一经常的代码编写体验涉及在 LISP 的 Emacs 版本中设置变量和写宏。LISP 被嘲讽为“Lots of Insane Stupid Parentheses(许多神经病的愚蠢的括弧)”的缩写,但它在很多方面是一门成功的语言,尤其是 Emacs。
Emacs 变量可在命令行中设置(如果您知道它们的名字和适当的值),设置方法是输入 M-xset-variable                    ,然后在提示符后输入变量名和它的新值。您也可以直接通过求它们的值来设置变量。为此,我建议使用草稿缓冲区。从“LinuxDoc Emacs Beginner HOWTO”中借用一个示例(请参阅),让我们修改自动填充模式(即词语自动换行)的宽度:
1
(setq fill-column 20)




输入后,把光标留在行末,输入 C-x C-e 来求表达式的值。在小缓冲区中结果是 20。测试它的方法是使用 M-q(fill-paragraph)命令来重新格式化文本的一个段落。
随着您学习的深入,您还可以编写实现新功能的代码。通过试验找到您喜欢的设置。然后,您可以把它们放在您的 ~/.emacs 定制文件中,以便今后使用。
Emacs 中的连接电子邮件和 Web 浏览工具已被构建到 Emacs 中。发送新的电子邮件消息的第一步是输入 %%%%IBS%%%% C-x m。当您写完后,用 C-x C-s 保存并发送您的消息。阅读邮件要稍稍复杂些。                                                            参考资料 at the end of the tutorial Web 浏览的实现是通过把 URL 发送到外部的浏览器或直接在 Emacs 中运行象 Lynx 这样的文本模式浏览器。输入 M-x browse-url-lynx-emacs 来调用 Lynx,输入 URL,就可以了。下面运行的示例是在一个终端模式 Emacs 会话中的电子邮件撰写和浏览。
不停地工作,不能玩……当然,游戏已被构建到 Emacs 中,有“Towers of Hanoi”和“Life through a variant of Tetris”(tm),还有古老的“Adventure”的另一版本,如下面的清单所演示的:
1
2
3
4
5
6
7
8
9
E/W Dirt road
You are on the continuation of a dirt road.  There are more trees on
both sides of you.  The road continues to the east and west.
There is a large boulder here.
>look at boulder
It is just a boulder.  It cannot be moved.
>climb boulder
You can't climb that.
...




甚至还有著名的 Rogerian 心理程序,Eliza,在早上三点,无论您怎样做都无法编译时,它能让您通过难关。输入 M-x doctor。它比任何 900 号码都便宜得多,是吗?




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0