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>】
- 第一次存盘的时候 Emacs 会将原文件重命名以备份。重命名的规则通常是在原文件名之后添加一个“~”字符。关掉文件备份可以用如下命令:
缓冲区(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
- Emacs入门笔记
- Emacs入门
- emacs入门
- emacs 入门
- Emacs入门
- Emacs入门
- Emacs入门
- [Emacs]Emacs初学笔记
- Emacs笔记
- emacs笔记
- emacs笔记
- emacs笔记
- emacs笔记
- Emacs笔记
- GNU Emacs Lisp编程入门(学习笔记1)
- [Emacs学习笔记]入门:移动光标的N种方法
- Emacs入门指南(1)
- Emacs入门指南(2)
- caffe— 使用模型进行fine tune
- 属性src和background区别
- 用文件保存学生信息
- swipe轮播插件,支持手势,简单实用
- 关于结婚
- Emacs入门笔记
- 《剑指offer》:[48]不能被继承的类-单例模式
- 使用 ResultSet 遍历查询结果String getString(int columnIndex)
- 翻转课堂心得
- bzoj1191(最大匹配,但不完全一样)
- <JAVA学习笔记6>——程序死锁、中断
- nginx之keepalive请求长连接复用率统计
- C语言基础 swtich结构中变量是字符,case的形式
- 观察者模式下的搜索引擎结合浏览器的完美实现