Emacs基础学习笔记二

2008年11月11日 | 分类: Linux相关, 应用技巧, 编辑器 | 标签: ,

* 撤销命令(Undo)
Emacs有好几个撤销命令,分别是C-x u和C-_(C-_ 的缺点是在某些键盘上可能不太容易按),在某些终端上,你可以按住 CONTROL 再按“/”来输入 C-_。
1) 没有改变文字的命令不算(包括光标移动命令和滚动命令)
2) 从键盘输入的字符以组为单位――每组 20 个字符――来进行处理。
(这是为了减少你在撤销“插入文字”动作时需要输入 C-x u 的次数)

* 文件(FILE):
C-x C-f: 查找并打开或者新建一个文件
C-x C-s: 存储文件,你会在屏幕的下方看到一条消息:“Wrote..TUTORIAL.cn”。第一次存盘的时候 Emacs 会将原文
件重命名以备份。重命名的规则通常是在原文件名之后添加一个“~”字符。
【对许多人来说,这是一个烦人的特性,关掉文件备份可以用如下命令:
M-x customize-variable <Return> make-backup-files <Return>】

存盘结束后,Emacs 会显示写入文件的文件名。你最好养成经常存盘的习惯,这
可以减少系统崩溃和死机给你带来的损失。

* 缓冲区(BUFFER):
你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要
切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同
时打开多个文件。
Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻
找到一个文件,Emacs 就在其内部开辟一个缓冲区。用下面的命令可以列出当前所有的缓冲区:
C-x C-b: 列出缓冲区
C-x 1: 离开缓冲区列表
不管存在多少缓冲区,任何时候都只能有一个“当前”缓冲区,也就是你正在编
辑的这个。如果你想编辑其它的缓冲区,就必须“切换”过去。上面讲过,用
C-x C-f 是一种办法。不过还有一个更简单的办法,那就是用 C-x b。用这条命
令,你必须输入缓冲区的名称。
输入 C-x b foo <Return> 以回到文件“foo”的缓冲区。
输入 C-x b *Messages* <Return> 瞅瞅消息缓冲区里都有什么东西。
C-x s   保存多个缓冲区

* 命令集扩展(EXTENDING THE COMMAND SET)
C-x     字符扩展。  C-x 之后输入另一个字符或者组合键。
M-x     命令名扩展。M-x 之后输入一个命令名。
M-x repl s<Return>changed<Return>altered<Return>。替换字符串。

* 自动保存(AUTO SAVE)
如果你已经修改了一个文件,但是还没来得及存盘你的计算机就罢工了,那么你
所做的修改就很可能会丢失。为了避免这样的不幸发生,Emacs 会定期将正在编
辑的文件写入一个“自动保存”文件中。自动保存文件的文件名的头尾各有一个
“#”字符,比如你正在编辑的文件叫“hello.c”,那么它的自动保存文件就叫
“#hello.c#”。这个文件会在正常存盘之后被 Emacs 删除。

所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
存文件)然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提
示确认的时候,输入 yes<Return>。

* 回显区(ECHO AREA)
如果 Emacs 发现你输入多字符命令的节奏很慢,它会在窗格的下方称为“回显区”
的地方给你提示。回显区位于屏幕的最下面一行。

* 状态栏(MODE LINE)
位于回显区正上方的一行被称为“状态栏”。状态栏上会显示一些信息,比如:

–:**  TUTORIAL.cn       (Fundamental)–L670–54%—————-

状态栏显示了 Emacs 的状态和你正在编辑的文字的一些信息。

你应该知道文件名的意思吧?就是你找到的那个文件嘛。-NN%– 显示的是光标在
全文中的位置。如果位于文件的开头,那么就显示 –Top– 而不是 –00%–;如
果位于文件的末尾,就显示 –Bot–。如果文件很小,一屏就足以显示全部内容,
那么状态栏会显示 –All–。

“L” 和其后的数字给出了光标所在行的行号。

最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动
过,所以状态栏上显示的不是星号而是短线(-)。

状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是
Fundamental,就是你现在正在使用的这个。它是一种“主模式”。

Emacs 的主模式林林总总。有用来编辑程序代码的――比如 Lisp 模式;也有用
来编辑各种自然语言文本的――比如 Text 模式。任何情况下只能应用一个主模
式,其名称会显示在状态栏上,也就是现在显示“Fundamental”的地方。

主模式通常会改变一些命令的行为。比方说,不管编辑什么语言的程序代码,你
都可以用一个相同的命令来添加注释。但是在不同的语言中注释的语法往往是不
同的,这时不同的主模式就会用各自不同的语法规则来添加注释。主模式都是可
以用 M-x 启动的扩展命令,M-x fundamental-mode 就可以切换到 Fundamental
模式。

>> 输入 M-x text mode<Return>。

别担心,什么都没变。不过细心一些可以发现,M-f 和 M-b 现在把单引号(’)
视为词的一部分了。而在先前的 Fundamental 模式中,M-f 和 M-b 都将单引号
视为分隔单词的符号。

主模式通常都会搞一些类似的小动作,因为很多命令其实完成的是“相同的工
作”,只是在不同环境下会有不同的工作方式而已。【所谓“求同存异”,在
Emacs 里得到了很好的体现】

用 C-h m 可以查看当前主模式的文档。

>> 用 C-u C-v 将本行带到屏幕的最上方。
>> 输入 C-h m,看看 Text 模式与 Fundamental 模式有哪些不同。
>> 输入 C-x 1 关掉文档窗格。

主模式之所以称之为“主(major)”模式,是因为同时还有“辅模式”(minor
mode)存在。辅模式并不能替代主模式,而是提供一些辅助的功能。每个辅模式
都可以独立地开启和关闭,跟其它辅模式无关,跟主模式也无关。所以你可以不
使用辅模式,也可以只使用一个或同时使用多个辅模式。

有一个叫做自动折行(Auto Fill)的辅模式很有用,特别是在编辑自然语言文本
的时候。启用自动折行后,Emacs 会在你打字超出一行边界时自动替你换行。

用 M-x auto fill mode<Return> 启动自动折行模式。再用一次这条命令,自动
折行模式会被关闭。也就是说,如果自动折行模式没有被开启,这个命令会开启
它;如果已经开启了,这个命令会关闭它。所以我们说,这个命令可以用来“开
关(toggle)”模式。

>> 现在输入 M-x auto fill mode<Return>。然后随便敲点什么,直到你看到它
分成两行。你必须敲一些空格,因为 Auto Fill 只在空白处进行断行。
【输入空格对英文来说是必须的,而对中文则不必。】

行边界通常被设定为 70 个字符【这里指英文字符】,你可以用 C-x f 命令配合
数字参数来重新设定它。

>> 输入 C-x f 并传递参数 20: C-u 2 0 C-x f。
然后输入一些文字,观察 Emacs 的自动折行动作
最后再用 C-x f 将边界设回 70。

如果你在段落的中间做了一些修改,那么自动折行模式不会替你把整个段落重新
折行,你需要用 M-q 手动折行。注意,光标必须位于你需要折行的那一段里。

>> 移动光标到前一段中,然后输入 M-q。


Share
目前还没有任何评论.