Emacs入门笔记

来源:互联网 发布:软件开发经费预算 编辑:程序博客网 时间:2024/06/05 21:04

参考资料 :Emacs22 中自带教程(输入C-h t)

  • C-v 按住control键再输入v
  • M-v 按住Mete(EDIT或ALT)键。如果没有这些键,可以用下面的方法代替,先按一下ESC键然后松开,再输入v。
    通常M系列组合键用来操作“由语言定义的单位如词、句子、段落”。而CONTROL系列组合键用来操作“与语言无关的基本单位比如“字符、行等”。
  • 小缓冲 (minibuffer)屏幕的最底端一行。
  • C-v 移动到下一屏
  • M-v 移动到上一屏
  • C-l 重绘屏幕,并将光标所在的行置于屏幕的中央。
  • C-p (previous) 向上移动一行
  • C-n (next) 向下移动一行
  • C-b (backward) 向左移动一个字符
  • C-f (forward) 向右移动一个字符
  • M-f 向右移动一个词,对于中文是移动到下一个标点符号。
  • M-b 向左移动一个词,对于中文是移动到上一个标点符号。
  • C-a 将光标移动到一行的头部
  • C-e 将光标移动到一行的尾部
  • M-a 将光标移动到“一句”的头部
  • M-e 将光标移动到“一句”的尾部注意: 重复的C-a命令没有作用重复的 M-a 命令会让光标不断回退到上一个句子。
  • M-< 将光标移动到所有文字的最开头。
  • M-> 将光标移动到所有文字的最末尾。

数字参数 大部分可以解释为重复次数

  • 例如 C-u 数字 命令
  • C-u 8 C-f 会向前移动8个字符。
  • 例外 C-v M-v 当你给定一个参数时,他们将滚动你指定的行数,而不是屏数。C-u 8 C-v是将屏幕向下滚动8行而不是8屏。
  • C-u 0 C-l 是将光标所在的行重绘成窗口的第0行。
  • C-g 终止一条命令。取消输入一半的命令。取消ESC的做法是连按两次ESC。

  • C-x 大多数与窗口、文件、缓冲区等诸如此类的东西有关。C-x 1只保留一个窗格,关掉其他所有的窗口。

插入与删除

  • delete 删除光标前的一个字符。
  • C-d 删除光标后的一个字符。
  • M-Delete 移除光标前的一个词。
  • M-d 移除光标后的一个词。
  • C-k 移除从光标到行尾的字符。(注意,单独的 C-k 会把一行的内容移除,而第二个 C-k 则会移除换行符,并使其后所有的行都向上移动。C-k 处理数字参数的方式很特别,它会把参数指定的那么多行连同其后的换行符一起移除,而不仅仅是重复 C-k 而已。比如 C-u 2C-k 会把两行以及它们的换行符移除;而如果只是输入 C-k 两次显然不是这个结果。)
  • M-k 移除从光标到句尾的字符。

  • 移除缓冲区任一部分字符的办法:在开始位置输入C-@或者C-SPC(空格) 标记开始。然后将光标移动到末尾,输入C-w就可以删除这之间的字符。

  • 移除和删除的区别:删除后的字符不可以被找回,而移除后的可以找回,

  • 实际上,移除掉的东西虽然看起来“消失”了,但实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉的东西虽然也可能还在内存里,但是已经被 Emacs“抛弃”了,所以就找不回来了。】重新插入被移除的文字称为“召回(yank)”。一般而言,那些可能消除很多文字的命令会把消除掉的文字记录下来(它们被设定成了“可召回”),而那些只消除一个字符k或者只消除空白的命令就不会记录被消除的内容(自然你也就无法召回了)。

  • 将被移除的文字恢复的动作称为“召回(yanking)”。(就好像把别人从你身边移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回,也可以在别的地方召回,还可以多次召回同样的文字以得到它的多个拷贝。

  • C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续
    编辑就行了。
  • 如果连续按 M-y 很多次,你可能会回到起始点,也就是最近移除的文字。【看得出这实际上是一个环。】
  • 如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。
  • C-x u 撤销 与C-_功能一样,但前者较易输入。
    • 但是有两个例外:
      1. 没有改变文字的命令不算(包括光标移动命令和滚动命令)
      2. 从键盘输入的字符以组为单位――每组 20 个字符――来进行处理。(这是为了减少你在撤销“插入文字”动作时需要输入 C-x u 的次数)

文件

  • C-x C-f 文件名,C-g 取消输入
  • C-x C-s 储存文件
    • 第一次存盘的时候 Emacs 会将原文件重命名以备份。重命名的规则通常是在原文件名之后添加一个“~”字符。关掉文件备份可以用如下命令:M-x customize-variable <Return> make-backup-files <Return>】

缓冲区(buffer)

  • 你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同时打开多个文件。
  • 大多数情况下,缓冲区与跟其对应的文件是同名的(不包括目录名),不过这也不是绝对的。用 C-x C-b 得到的缓冲区列表总是显示缓冲区名。
  • 你在 Emacs 窗格里看到的“任何”文字都一定属于某个缓冲区。然而,缓冲区未必有对应文件:比如显示缓冲区列表的缓冲区就是这样。再比如“Messages”缓冲区也没有对应文件,这个缓冲区里存放的都是在 Emacs 底部出现的消息。
  • C-x C-b 列出缓冲区
    • Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻找到一个文件,Emacs 就在其内部开辟一个缓冲区。
    • 可以使用C-x C-f 切换缓冲区,也可以使用C-x b
  • C-x s 保存多个缓冲区

命令集扩展(EXTENDING THE COMMAND SET)

  • C-x 字符扩展。 C-x 之后输入另一个字符或者组合键。
  • C-x C-c 退出emacs
  • C-z 暂时离开Emacs
    • 在允许 C-z 的系统中,C-z 会把 Emacs“挂起”,也就是说,它会回到 shell但不退出 Emacs。在常用的 shell 中,通常可以用“fg”或者“%emacs”命令再次回到 Emacs 中。
    • 在没有提供挂起功能的系统中,C-z 会在 Emacs 之下创建一个子 shell 来让你运行其它程序,并且再次“回到”Emacs 中――虽然我们并没有真正离开过。这种情况下,通常用 shell 命令“exit”从子 shell 回到 Emacs。
    • M-x 命令名扩展。M-x 之后输入一个命令名。
    • 用命令名扩展的命令通常并不常用,或只用在部分模式下。比如 replace-string(字符串替换)这个命令,它会在全文范围内把一个字符串替换成另一个。在输入 M-x 之后,Emacs 会在屏幕底端向你询问并等待你输入命令名。如果你想输入“replace-string”,其实只需要敲“repl s”就行了,Emacs 会帮你自动 你
      补齐。输入完之后按 。

自动保存(AUTO SAVE)

  • 如果你已经修改了一个文件,但是还没来得及存盘你的计算机就罢工了,那么你所做的修改就很可能会丢失。为了避免这样的不幸发生,Emacs 会定期将正在编辑的文件写入一个“自动保存”文件中。自动保存文件的文件名的头尾各有一个“#”字符,比如你正在编辑的文件叫“hello.c”,那么它的自动保存文件就叫“#hello.c#”。这个文件会在正常存盘之后被 Emacs 删除。所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保存文件)然后输入 M-x recover file 来恢复你的自动保存文件。在提示确认的时候,输入 yes。

回显区(ECHO AREA)

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

状态栏(MODE LINE)

  • 位于回显区正上方的一行被称为“状态栏”。状态栏上会显示一些信息,比如:
    —:** TUTORIAL.cn (Fundamental)--L670--54%————————状态栏显示了 Emacs 的状态和你正在编辑的文字的一些信息。你应该知道文件名的意思吧?就是你找到的那个文件嘛。
  • -NN%– 显示的是光标在全文中的位置。如果位于文件的开头,那么就显示 –Top– 而不是 –00%–;如果位于文件的末尾,就显示 –Bot–。如果文件很小,一屏就足以显示全部内容,那么状态栏会显示 –All–。
  • “L” 和其后的数字给出了光标所在行的行号。最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动过,所以状态栏上显示的不是星号而是短线(-)。
  • 状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是Fundamental
  • 主模式通常会改变一些命令的行为。比方说,不管编辑什么语言的程序代码,你都可以用一个相同的命令来添加注释。但是在不同的语言中注释的语法往往是不同的,这时不同的主模式就会用各自不同的语法规则来添加注释。主模式都是可以用 M-x 启动的扩展命令,M-x fundamental-mode 就可以切换到 Fundamental模式。
  • 在text模式中M-f 和 M-b把单引号(’)视为词的一部分了。而在 Fundamental 模式中,M-f 和M-b 都将单引号视为分隔单词的符号。
  • 主模式通常都会搞一些类似的小动作,因为很多命令其实完成的是“相同的工作”,只是在不同环境下会有不同的工作方式而已。【所谓“求同存异”,在Emacs 里得到了很好的体现】
  • C-h m 查看当前主模式的文档。
  • C-u C-v 将本行带到屏幕的最上方。
  • 主模式之所以称之为“主(major)”模式,是因为同时还有“辅模式”(minormode)存在。辅模式并不能替代主模式,而是提供一些辅助的功能。每个辅模式都可以独立地开启和关闭,跟其它辅模式无关,跟主模式也无关。所以你可以不使用辅模式,也可以只使用一个或同时使用多个辅模式。

搜索(SEARCHING)

  • Emacs 可以向前或向后搜索字符串。搜索命令是一个移动光标的命令:搜索成功后,光标会停留在搜索目标出现的地方。Emacs 的搜索命令的独特之处在于,它是“渐进的(incremental)”。意思是搜索与输入同时进行:你在键盘上一字一句地输入搜索词的过程中,Emacs 就已经开始替你搜索了。
  • C-s 是向前搜索,C-r 是向后搜索。
  • C-g 会让光标回到搜索开始的位置,
    *<Return> 则让光标留在搜索结果上.

多窗格(MULTIPLE WINDOWS)

  • C-M-v 滚动下方的窗格。(如果你并没有 META 键,用 ESC C-v 也可以。)【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】
  • C-x o(“o”指的是“其它(other)”),将光标转移到下方的窗格。
  • C-x 4 C-f,紧跟着输入一个文件名,再用 结束。可以看到你指定的文件出现在下方的窗格中,同时光标也跳到了那里。

递归编辑(RECURSIVE EDITING LEVELS)

  • 有时候你会进入所谓的“递归编辑”。递归编辑状态由位于状态栏的方括号所指示,其中包含了用小括号来指明的模式名称。比如说,你有时可能会看到[(Fundamental)],而不是 (Fundamental)。【比如在用 M-% 进行交互式替换的时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式,这就是所谓的递归编辑。】
  • 离开递归编辑可以用 ESC ESC ESC。这是一个最通用的“离开”命令,你甚至可以使用它来关掉多余的窗格,或者离开小缓冲。输入 M-x 进入小缓冲;然后输入 ESC ESC ESC 离开。
  • 你不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的命令和其参数(arguments)。

获得更多帮助(GETTING MORE HELP)

  • C-h ? 查看emacs提供的帮助,如果你按 C-h 之后没有任何帮助信息显示出来,那么试试 F1 键或者 M-x help 。)
  • C-h c,输入 C-h c 之后再输入一个组合键,Emacs 会给出这个命令的简要说明。
  • C-h k,会新打开一个 Emacs 窗格以显示函数的名称及其文档。
  • C-h f 解释一个函数。需要输入函数名。
  • C-h a 用来显示 Emacs 变量的文档。Emacs 变量可以被用来“定制 Emacs 的行为。
  • C-h i 阅读联机手册(也就是通常讲的 Info)。 这个命令会打开一个称为“info”的特殊缓冲区,在那里,你可以阅读安装在系统里的软件包使用手册。要读 Emacs 的使用手册,按 m emacs <Return> 就可以了。如果你之前从没用过 Info 系统,那么请按“?”,Emacs 会带你进入 Info 的使用指南。在看完本快速指南之后,Emacs Info 会成为你的主要参考文档。
0 0
原创粉丝点击