Emacs 学习总结

来源:互联网 发布:佳驰软件 编辑:程序博客网 时间:2024/04/30 08:33

众所周知在linux下最牛的编辑器就是emacs,它以出色的快捷键使用、集成shell、与GCC
编译器天然结合而著称。学习emacs吧,它会让编程成为乐趣,因为有了emacs。

退出 Emacs,请用 C-x C-c
C-v:下翻屏=page down
M-v:上翻屏=page up
C-l :将光标所在的位置或行位于屏幕的中央.(注意是 CONTROL-L,不是 CONTROL-1)

                                  上一行 C-p
                                 :
                                 :
            向左移 C-b .... 目前光标位置 .... 向右移 C-f
                                 :
                                   :
                               下一行 C-n
“P N B F”四个字母分别代表了四个词,用这四个词记忆这些组合键会更容易:
P 代表 previous(上一行),N 代表 next(下一行),B 代表 backward(回
退),而 F 则代表 forward(前进)。这些组合键今后将与你形影不离。
当你移动光标穿越屏幕的上下边界时,在边界外的文字会移动到屏幕内,这称为
“滚动”(scrolling)。滚动使得光标可以被移动到文字中的任何位置,并且还
不会让光标跑到屏幕外边去。

#####################################################
        C-f     向右移动一个字符
        C-b     向左移动一个字符

        M-f     向右移动一个词【对中文是移动到下一个标点符号】
        M-b     向左移动一个词【对中文是移动到上一个标点符号】

        C-n     移动到下一行
        C-p     移动到上一行

        C-a     移动到行首
        C-e     移动到行尾

        M-a     移动到句首
        M-e     移动到句尾

#####################################################
M-< (META 小于号)可以将光标移动到所有文字的最开头。
M-> (META 大于号)可以将光标移动到所有文字的最末尾。
注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这
些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是
M-comma(META 逗号)。

#####################################################
为一个命令指定数字参数(也就是重复次数)的方法是:先输入 C-u,然后输入数字作为参数,最后再输入命令。

举例来说, C-u 8 C-f 会向前移动 8 个字符。而 C-v 和 M-v 则属于另一种类型的例外。当给定一个参数时,它们将滚动你指定的“行数”,而不是“屏数”。举例来说,C-u 8 C-v 将屏幕向下滚动 8 行,
而不是 8 屏。

#####################################################
* 在 EMACS 失去响应的时候(WHEN EMACS IS HUNG)

用 C-g 来安全地终止这条命令。C-g也可以终止一条执行过久的命令。C-g 还可以取消数字参数和只输入到一半的命令。取消 <ESC> 的正确做法是再连按两次 <ESC>。

#####################################################
* 被禁用的命令(DISABLED COMMANDS)
如果你用到了一个被禁用的命令,Emacs 会显示一个提示消息,告诉你这个命令
到底是干什么的,询问你是否要继续,并在得到你的肯定之后再执行这命令。

#####################################################
* 窗格(WINDOWS)

C-x 1   只保留一个窗格(也就是关掉其它所有窗格)。(如果要多个窗口就改变后面的数字,一般就是1和2)

#####################################################
* 插入与删除(INSERTING AND DELETING)

<Delback> ==“Backspace”键;不等于“Del”键.切记!
试试 C-u 8 *,这将会插入 ********。(很好玩~)

---------------------------------------------------------------------------------------------------------------------------------

<Delback>    删除光标前的一个字符
        C-d          删除光标后的一个字符

        M-<Delback> 移除光标前的一个词
        M-d          移除光标后的一个词

        C-k          移除从光标到“行尾”间的字符
        M-k          移除从光标到“句尾”间的字符


你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
想要移除的区域的一端,然后按 C-@ 或 C-SPC(任一即可,SPC指空格)【注意,
C-SPC 往往被中文用户设定成输入法热键,如果这样,C-SPC 就被系统拦截而无
法传递给 Emacs 了,因此这里还是推荐使用C-@。】,然后将光标移动到另一端,
再按 C-w 就可以把位于这两点之间的所有文字移除了。

>> 移动光标到上一段开头的“你”字。
>> 输入 C-@ 。Emacs 应该会在屏幕的下方显示一个“Mark set”的消息。
>> 移动光标到第二行中的“端”字。
>> 输入 C-w,从“你”开始到“端”之前的文字被全部移除。
#####################################################
注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以找回
来,而被删除的就不行了。

召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。

如果你一次连按了好几下 C-k,那么所有被移除的行会被存储在一起,只要一个
C-y 就可以把它们都召回。

C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然
没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接
着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上
一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续
编辑就行了。
#####################################################
* 撤销(UNDO)

通常 C-x u 会消除一个命令所造成的所有改变;如果你在一行中连续多次地使用
C-x u,你会把以前的命令也依次撤销。

C-_有同样效果,但是太麻烦 了,所以不说了.

#####################################################

C-x C-f   寻找一个文件
你输入的文件名会出现在屏幕最底端的一行,这一行被称为小缓冲(minibuffer),在小缓冲里你可以使用通常的 Emacs 编辑命令来编辑文件名。在小缓冲里输入文件名(其实输入其它东西也一样)时可以用 C-g 取消。

C-x C-s   储存这个文件
这条命令把 Emacs 中的文字存储到文件中。第一次存盘的时候 Emacs 会将原文件重命名以备份。重命名的规则通常是在原文件名之后添加一个“~”字符。【对许多人来说,这是一个烦人的特性,关掉文件备份可以用如下命令: M-x customize-variable <Return> make-backup-files <Return>】

#####################################################
* 缓冲区(BUFFER)
C-x C-b   列出缓冲区; 输入 C-x 1 离开缓冲区列表.
不管存在多少缓冲区,任何时候都只能有一个“当前”缓冲区,也就是你正在编辑的这个。如果你想编辑其它的缓冲区,就必须“切换”过去。上面讲过,用C-x C-f 是一种办法。不过还有一个更简单的办法,那就是用 C-x b。用这条命令,你必须输入缓冲区的名称。

C-x s   保存多个缓冲区

C-x s 会找出所有已被修改但尚未存盘的缓冲区,然后向你逐个询问:是否需要存盘?

#####################################################
* 命令集扩展(EXTENDING THE COMMAND SET)

C-z 可以暂时离开 Emacs——当然,你还可以再回来。(在X-windows下面类似使用最下话按钮,就是稍微方便一点,呵呵)

用命令名扩展的命令通常并不常用,或只用在部分模式下。比如 replace-string(字符串替换)这个命令,它会在全文范围内把一个字符串替换成另一个。在输入 M-x 之后,Emacs 会在屏幕底端向你询问并等待你输入命令名。如果你想输入“replace-string”,其实只需要敲“repl s<TAB>”就行了Emacs 会帮你自动补齐。输入完之后按 <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,就是你现在正在使用的这个。它是一种“主模式”。

改变运行模式的方法:
编辑自然语言文本——比如现在——应该用 Text 模式。

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

还有改成C mode,就是输入 M-x C mode<Return>。还有很多mode.

#####################################################

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

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

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

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

M-q 手动折行。注意,光标必须位于你需要折行的那一段里。

#####################################################
* 搜索(SEARCHING)

Emacs 的搜索命令的独特之处在于,它是“渐进的(incremental)”。意思是搜索与输入同时进行:你在键盘上一字一句地输入搜索词的过程中,Emacs 就已经开始替你搜索了。

C-s 是向前搜索,C-r 是向后搜索。

>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
   慢慢输入“cursor”这个词,每敲一个字都停顿一下并观察光标。
   现在你应该已曾经找到“cursor”这个词了。
>> 再按一次 C-s,搜索下一个“cursor”出现的位置。
>> 现在按四次退格键,看看光标是如何移动的。
>> 敲 <Return> 结束搜索。


在整个过程中,都可以用 C-g 来终止搜索。【你会发
现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
这是很有用的功能。】


#####################################################
* 多窗格(MULTIPLE WINDOWS)

>> 移动光标到这一行,然后输入 C-u 0 C-l。

>> 现在输入 C-x 2,它会将屏幕划分成两个窗格。
   这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。

>> 试试用 C-M-v 滚动下方的窗格。
   (如果你并没有 META 键,用 ESC C-v 也可以。)
   【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】

>> 输入 C-x o(“o”指的是“其它(other)”),
   将光标转移到下方的窗格。

>> 在下方的窗格中,用 C-v 和 M-v 来滚动。
   同时继续在上方的窗格里阅读这些指导。

>> 再输入 C-x o 将光标移回到上方的窗格里。
   光标会回到它在上方窗格中原本所在的位置。


#####################################################
* 递归编辑(RECURSIVE EDITING LEVELS)

递归编辑状态由位于状态栏的方括号所指示,其中包含了用小括号来指明的模式名称。比如说,你有时可能会看到[(Fundamental)],而不是 (Fundamental)。【比如在用 M-% 进行交互式替换的时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式,这就是所谓的递归编辑。】

离开递归编辑可以用 ESC ESC ESC。这是一个最通用的“离开”命令,你甚至可以使用它来关掉多余的窗格,或者离开小缓冲。

你不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的命令和其参数(arguments)。

#####################################################
* 获得更多帮助(GETTING MORE HELP)
如果你连自己到底需要什么帮助都不知道,那么就输入 C-h ?,Emacs会告诉你它能提供了哪些帮助。如果你按了 C-h 又想反悔,可以用 C-g 取消。

最基本的帮助功能是 C-h c。输入 C-h c 之后再输入一个组合键,Emacs 会给出这个命令的简要说明。


C-h f        解释一个函数。需要输入函数名。

>> 试试看,输入 C-h f previous-line<Return>。
   Emacs 会给出它所知道的所有有关“实现 C-p 命令功能的函数”的信息。


C-h a        相关命令搜索(Command Apropos)。输入一个关键词然后 Emacs 会列出所有命令名中包含此关键词的命令。这些命令全都可以用 M-x 来启动。对于某些命令来说,相关命令搜索还会列出一两个组合键。

>> 输入 C-h a file<Return>。

Emacs 会在另一个窗格里显示一个 M-x 命令列表,这个列表包含了所有名称中含有“file”的命令。你可以看到像“C-x C-f”这样的组合键显示在“find-file”这样的命令名的旁边。
#####################################################

呵呵,这么多快捷键怎么记得住?
其实也不难,记住这些快捷键的最好办法就是去使用emacs,相信你会体验到敲击键盘的乐趣的!

原创粉丝点击