ExASIC
分享让工作更轻松

Emacs导览

标签:EmacsLinux

本文译自《A guided tour of Emacs》,原文链接:https://www.gnu.org/software/emacs/tour/index.html

splash

GNU Emacs手册中写Emacs为可扩展、可定制、自文档实时显示的编辑器。不过这段描述却几乎没有告诉初学者Emacs能做什么。为了让你有个概念,下面列举了一些Emacs可以做的事情:

除了普通的编辑功能,Emacs还有一些特殊功能,帮你写各种不同的人类语言、编程语言和标记语言:

hello small:center:
点击浏览大图

latex smal:center
点击浏览大图

code-small:center:
点击浏览大图

还可以作为编译、运行和测试程序的工具。Emacs可以集成GDB作为IDE使用(M-x gdb):

gdb composite:center:
点击浏览大图

Emacs可以比较两个文件,并高亮差异(M-x ediff):

ediff small:center:
点击浏览大图

Emacs是一个文件管理器(M-x dired):

dired small:center:
点击浏览大图

Emacs可以用来阅读新闻、邮件、RSS订阅(M-x gnus):

gnus small:center:
点击浏览大图

你甚至可以在Emacs里玩俄罗斯方块(M-x tetris):

tetris small:center
点击浏览大图

现在你也许明白了为什么人们不只是把Emacs当作一个文本编辑器,而是一个几乎完整的操作系统。一些用户发现他们在Emacs里就可以完成几乎所有的工作。

为什么选择Emacs?

Emacs提供了一个集成环境来帮你提高效率,如以下几个方面:

这种操作的一致性意味着使用Emacs常常比学习多个单独的软件来得更容易,尤其是当这些单独的软件都有一套自己的编辑方法和快捷键的时候。

如果Emacs不按你喜欢的方式来工作,你可以使用Emacs Lisp(Elisp)语言来定制、自动化常用的任务、或者增加新的功能。Elisp非常容易上手,功能也很强大:你可以用来改变和扩展Emacs的几乎任何功能。你可以通过写Elisp代码,让Emacs成为你希望的样子。敢于这样说的一个证据就是上文中提到所有的功能(还有后面即将描述的更多其它功能)都是用Elisp写的。

Emacs还是跨平台的。你可以在很多平台,包括GNU/Linux、BSD、其它Unix衍生平台、Microsoft Windows中使用相同的编辑器(基于同样的配置文件)。[译者注:Mac是一种Unix平台]

正式开始之前

如果已经安装好了Emacs,你可以顺着这里的例子学习。无论何时决定开始使用Emacs,你总是应该先学习下Emacs教程。这是一份互交式的、根据实际经验总结的教程,让你学会:

要打开教程请启动Emacs,再输入C-h t,也就是Ctrl-h再按一下t。

这个导览中描述的所有功能在GNU Emacs 23或新的版本中都可以使用。部分功能在老版本中不能使用,但可以单独安装(译者注:安装Elisp语言写的插件)来扩展。

偶尔我会这样说:

参考(info "(emacs)Using Region")来获得更多信息。

这参考了Emacs手册中的某一页,你可以通过下方的链接去阅读。然而,你可以直接在Emacs里通过内置文档阅读器来阅读这些页面,这叫做Info。要做这个,按M-:,然后输入(info "(emacs)Using Region"),RET回车。

manual small:center:
点击浏览大图

Emacs手册是一份学习Emacs的好资料。你可以Emacs输入C-h r来阅读。你还可以在线阅读

Emacs还有其它大量的帮助功能,我们后面再去了解这些。你现在可以通过C-h C-h来先查看下帮助列表。

文本处理的能力

Emacs提供了一大套工具来处理文本,举个不恰当的例子,就像一把瑞士军刀,因为Emacs也有很多方法来处理文本中的各种信息。

M-x dired,在你指定的文件夹里调用Dired,文件管理器模式。然后C-x C-q(或者M-x wdired-change-to-wdired-mode)切换到可编辑的模式:

wdired small:center
点击浏览大图

这个模式下,在右栏修改文件名,然后输入C-x C-s(保存)修改的文件名。文件改名跟编辑文本一样简单。批量改名(如,把icon_*改成backup_icon_*)就如同查找替换一样简单(M-x query-replace或者M-%)。不需要学习单独的批量重命令工具。

在Emacs不仅能和文件、文件夹互交,也可以和操作系统工具、编译器、调试器、个人信息管理软件、网络、邮件、即时聊天工具、多种其它的互联网服务、还有很多其它工具互交。第三方工具组成的生态圈实现了更多的功能。由于这种集成,使得学习Emacs的任何编辑功能(比方说查找和替换)的优势翻了数倍。

基本编辑命令

Emacs让用户快速和高效工作的一个方法就是为移动和处理文本提供了高层次命令。有处理字符、单词、行、句子、段落、页、功能定义、空白等命令。你可以在阅读或者编辑源代码、网页、shell、地址录、邮件等的任何地方使用这些命令。

在buffer里移动

最基本的buffer移动,即光标按排(行)和列(字符)移动命令:

[译者注:buffer,是Emacs的术语,buffer中存放的是整个文档。编辑文件就是编辑buffer中的文本,从打开文件后到保存文件前都是对buffer进行操作。在不少编程语言中也中buffer的概念,比如java、python,封装了如byte型的数组和操作方法。]

命令 描述 命令 描述
C-f 向前一个字符 C-b 向后一个字符
C-n 向下一行 C-p 向上一行

移动间距大点儿的方法:

命令 描述 命令 描述
C-a 行首 C-e 行尾
M-f 向前一个单词 M-b 向后一个单词
M-a 向前一个句子 M-e 向后一个句子
M-v 向上一屏 C-v 向下一屏
M-< buffer的开头 M-> buffer的最后

当你对这些快捷键熟悉了之后,比其它软件中的类似功能的命令(Home、End、Ctrl+Left等)要快一些。因为你不需要把手移开按键位置。另外,这些快捷键远远快于用鼠标来移动。

Emacs经常提供额外的上下文相关的命令来移动光标(例如,在源码中,移动到前一个或后一个函数的位置)。

上面的许多命令会移动到buffer中当前位置相关的地方,所以你可以重复的使用(例如,C-p C-p C-p向下移三行)。你可以使用前缀参数来节省时间:C-u后跟一个数字,这样移动命令就重复指定的次数。你还可使用M-[digit]来代替C-u [digit]。如果你使用C-u没跟数字,那默认是4次。当你不精确知道需要多少次的时候,省略去数字可以节省时间。

命令 描述
C-u 3 C-p 向上3行
C-u 10 C-f 向下10行
M-1 M-0 C-f 向前10个字符
C-u C-n 向前4行
C-u C-u C-n 向下16行
C-u C-u C-u C-n 向下64行

你可以直接跳转到buffer的指定行:

命令 描述
M-g g 跳转到指定行

搜索文本是一个简便的方法来在buffer里移动。尽管把搜索当作是另一种移动方法。当你在查找某个关键字,可以使用递增式搜索来跳转到指定位置,不要根据行或页来移动。后面会讲到更多搜索的内容。

命令 描述
C-s 向前递增式搜索
C-r 向后递增式搜索

另一种在buffer中移动方法是使用标记mark。

Mark

Emacs会记住一个叫做Mark的东西,就是先前的光标位置。你可以在buffer里设置一个特殊位置的mark,所以可以轻松地转到那里。按C-x C-x将会转到Mark的位置。实际上,这个命令同时也会把Mark移到跳转前的位置,因此,第二次按C-x C-x将会返回原始位置。

命令 描述
C-SPC 设置Mark到当前位置
C-x C-x 交换当前光标和Mark的位置

你可以显式的设置Mark,但某些命令会自动设置Mark,让你在buffer里移动起来更方便。

当你... 把Mark设置在...
按C-SPC 你当前的位置
跳转到buffer的末尾(M-<或者M->) 你之前的位置
退出递增式搜索 开始搜索的位置
粘贴文本 粘贴区域的开头
插入一个buffer或文件 插入文本的开头

正如你看到的,Emacs尝试着变得更有帮助:很多命令在离得很远的地方设置Mark,你就可以简单地按C-x C-x回到你原来的位置。Emacs让你很难在buffer里迷路,即使你绕了一个大圈,也不需要上下滚动来回到你原来的位置。

Emacs为你保存了很多个之前的Mark,你可以循环使用buffer里曾设置过的16个Mark点。

命令 描述
C-u C-SPC 在Mark环里循环

区域(Region)

Mark还有另一个目的:mark和当前位置一起描绘了区域的轮廓。很多命令只对区域(就是Mark和当前位置)内的文本有效。你可用设置Mark(C-SPC)然后移动光标到另一个位置,或者或者用鼠标点击拖动来显式地定义一个区域。Emacs提供了一些通过移当前位置和合适地Mark来设置区域的命令,如:

命令 描述
C-x h 创建一个包含整个buffer的区域(“全选”)
M-h 创建一个包含当前区域

一些命令有附带着帮忙设置区域的作用。C-y(粘贴)、插入文件、插入buffer都在插入的文本周围设置了区域。

Narrowing把buffer的浏览和编辑限制到一个特定的区域。当只对buffer的一小部分(比如书的一个章节)操作时会很方便。然后,像递增搜索、beginning-of-buffer、end-of-buffer这些命令就不会跑到你感兴趣的区域外面去,像查找替换命令也不会影响整个文件。

命令 描述
C-x n n 把buffer缩小到当前区域
C-x n w 恢复(变大)buffer

更多信息参考(info "(emacs)Narrowing")

干掉(“剪切”)文本

和移动文本一样,Emacs提供了大量的删除文本的命令。

C-k删除当前行光标处至行末的部分(如果光标在行末,就删除换行符)。如果C-k使用了前置参数,就可以删除多行:

命令 描述
C-k 删除行
C-u 10 C-k 删除10行

下面的命令作用于区域,跟“剪切”和“粘贴”差不多:

命令 描述
C-w 删除区域(“剪切”)
M-w 保存区域到移除环,不真正删除(“复制”)

这些命令也很方便:

命令 描述
M-d 删除下一个单词
M-k 删除到句末

上面所有删除命令所谓的删除文本,是说Emacs把文本移除了,并保存起来方便以后取回(yanking)。大部分删除大量文本的命令并不是直接删掉,而是移除(kill),所以你可以用这些命令来“删除”或者“剪切”文本,以便后来继续使用这些文本。

救回(“粘贴”)文本

一段文本移除后,被放到了叫做“移除环”的地方,类似于剪切板:你可以用C-y从移除环里取回这些文本。然而,跟剪切板不一样的是,移除环可以存储下很多次剪切的文本。如果用C-y取回的不是你需要的文本,可以输入M-y(需要的话,重复多次)在移除环里循环取回先前移除的文本。

命令 描述
C-y 取回最新移除的文本
M-y 取回先前移除的文本

回忆一下,绝大多数删除大量文本的命令实际上是移除文本(例如放到移除环),所以后来可以恢复。Emacs很难永久的丢失大量的文本:在只有单个剪切板的编辑器里,很容易就误删了大量文本,或者把剪切板里的内容冲掉了(剪切两次)。但是在Emacs里,这两种情况都可以轻松地从移除环里恢复。

撤销

Emacs的撤销与其它编辑器有一点点不一样。在大部分编辑器里,撤销一些修改,再做一些新的修改,之前“重做”的状态就不再可以恢复。所以当广泛地使用“撤销”和“重做”时不得不非常地小心,来避免“重做”列表被意外地冲掉。

Emacs使用了不同的撤销模型来避免这种不足。在连续撤销之后,Emacs让之前的所有的操作都可撤销,包括“撤销”操作。(只要连续的撤销操作被其它命令打断时,就做这种“所有操作可撤销”的保护。)

如果觉得听起来太复杂,只需记住一点:“撤销”可以把你带到buffer之前的任意一个状态(除非Emacs已经用光了内存,存不下撤销历史)。这个原则使得Emacs很难意外丢失你的工作。

撤销有三种不同的快捷键:

命令 描述
C-/ 撤销
C-_ 撤销
C-x u 撤销

所以如果你需要回到buffer之前的状态,简单地移一下光标(来打断任何已经存在的撤销序列),并重复按C-/直到找到你需要的。

要学习更多关于撤销的内容,请参考(info "(emacs)Undo")

递增式搜索

命令 描述
C-s 递增式搜索

C-s后面跟一些文本就启动了递增式搜索。在输入的同时,Emacs跳转到你输入文本的下一次出现的位置(与Mozilla Firefox或者其它浏览器的搜索类似),并且高亮屏幕内所有匹配到的文本。

isearch small:center
点击浏览大图

递增搜索时,你可以再按C-s跳转到下一处。

当你找到搜索的内容后,你可以按RET(或者任何移动光标的命令)来退出搜索,退出后光标将停在匹配处。或者按C-g(“取消”),光标将返回开始搜索的地方。如果你在匹配处退出后,还可以按C-x C-x回到开始的地方,因为递增式搜索已经恰当地设置了mark点。

这些命令帮助你处理之前的问题:

命令 描述
C-s C-s 搜索刚刚搜索过的文本
C-s M-p 搜索历史里的前一个文本
C-s M-n 搜索历史里的后一个文本
C-h k C-s 显示更多递增搜索的命令

你可用C-r来向后递增搜索。(上面这些命令在向后搜索时用可以使用。)在向前(向后)搜索的任何时候,你可按C-r(C-s)来切换到向后(向前)搜索。

命令 描述
C-r 向后递增搜索

更多信息请参考(info "(emacs)Incremental Search")

查找和替换

命令 描述
M-% 查找替换

查找替换命令提示你输入要搜索字符串和替换文本,然后在buffer里的每个匹配处,你都可以选择是否替换。这里是每次提示的可选项:

关于选项的更多信息请参考(info "(emacs)Query Replace"),你也可以在查找替换操作时按?来查看帮助。

正则查找

Emacs允许你用正则来搜索。

命令 描述
C-M-s 正则递增搜索

正则是,用一种特殊的语言来描述要找的文本,一次性搜索许多不同的字符串的简洁的方法。正则的语法不在本导览讨论的范围之内,请参考(info "(emacs)Regexps")

如果你刚接触正则,或者你在写一个特别复杂的正则,可以使用正则构建器(M-x re-builder)。这个命令弹出一个单独的窗口,你可以在里面测试正则。当你编写正则的时候,原buffer里任何匹配到的文本会高亮显示。

除了一个一个地跳转,你还可以一次显示所有匹配到的内容。M-x occur提示你输入正则,然后在另一个单独的buffer里列出所有匹配到的行(包括行号)。在列出的任意一行上单击(译者注:单击鼠标或者按回车键),buffer就会跳转到对应的行。

正则查找和替换

正则表达式在查找替换方面尤其强大,因为Emacs允许用查找到的文本来组合替换文本。你可以在替换文本插入特殊的转义,Emacs会用查找的内容来替换这些转义:

替换文本中的转义 Emacs用这些来替换
\& 查找到的原始文本
\1, \2等 第一个、第二个括号匹配的文本
# 到目前替换的次数
\? 每次匹配到时提示用户输入的文本
\,(lisp-expression ...) 一个lisp函数执行的结果

这里是一个例子,假设我们的buffer里有下面的一些名字:

George Washington
John Adams
Thomas Jefferson
James Madison
James Monroe

如果我们运行M-x replace-regexp,查找\(\w+\) \(\w+\),替换成\,(upcase \2), \1,现在会看到buffer变成下面的样子:

WASHINGTON, George
ADAMS, John
JEFFERSON, Thomas
MADISON, James
MONROE, James

正如你看到的,正则替换可以实现一些相当复杂的转换。(简单的说,查找两个单词,替换成第二个单词的大写形式,后接逗号和第一个单词。)

键盘宏

键盘宏是一种记住一连串按键、后面可以重复使用的方法。很方便地把一些枯燥无味的编辑任务自动化。

命令 描述
F3 开始录制宏
F4 停止录制宏
F4 回放一次宏
M-5 F4 回放5次宏
M-0 F4 一直回放宏,直到有错误发生

例如,下面这一串按键实现了与前面的正则替换的相同的功能,就是把George Washington替换成WASHINGTON, George:

M-d C-d M-u , [SPC] C-y C-n C-a

我们把按键序列录制成宏之后,可以按M-0 F4来转换之前的buffer。在这种情况下,Emacs重复的执行直到buffer的末尾。

更多信息请参考(info "(emacs)Keyboard Macros")

命令的帮助

如果你很久之前读过这个,你很可能被要记住大量的命令名字和快捷键吓住了。幸运地是,Emacs有详尽的很容易获取的文档。这些文档不仅仅是给初学者看的。Emacs有几千个命令,然而大多数人只用到其中的一点点。所以甚至是Emacs专家还经常查阅这些文档来学习新的命令,或者是在记忆里过一遍老命令。

如果你不记得一个特定的快捷键或者命令,你可以可以下面的命令来阅读命令描述:

命令 描述
C-h k 显示与特定按键相关的命令文档
C-h f 根据命令名字(就是M-x后面输入的内容)来显示文档

例如,C-h k C-s和C-h f isearch-forward RET都可显示递增式搜索的文档。

function help
点击浏览大图

这很方便,例如,如果你不记得C-s是什么命令,或者是你记得递增式搜索的的命令但想看看详细用法。文档里有命令的全名、绑定的快捷键、命令的详细描述。

还有,如果不记得怎样使用一个特定的功能,你可以用apropos来搜索:

命令 描述
C-h a 用关键字或者正则来要找命令

例如,我想要激活narrowing,但是不记得怎么激活,你就可以输入C-h a narrow RET,将会显示包含有narrow的命令列表,其中就有M-x narrow-to-region。

更多有用的功能

与常用工具集成

Emacs以可以与很多常见工具集成著称。不仅仅可以从编辑器里启动集成的工具,Emacs通常还帮你更高效的使用它们的输出。这里是一些例子:

M-x shell

在名叫*shell*的buffer里启动一个shell。用C-u M-x shell来给buffer指定一个不同的名字。

shell small
点击浏览大图

M-x compile

启动make(自己选择目标和选项),在新buffer里显示输出。Emacs鉴定出错的行,包括文件名和行号,你在上面点击就会直接跳转到buffer的对应行。

compile
点击浏览大图

M-x gdb

在新buffer里启动gdb,你可以像往常一样使用gdb的命令。然而,在Emacs的源码buffer里可以直接设置断点,并可以突出显示当前执行的行。Emacs也可以同步地在单独的窗口里显示断点、堆栈、本地变量等。

gdb
点击浏览大图

M-x grep

启动grep,在新buffer里输出结果。和M-x compile一样,当你在匹配处点击时,将会打开对应的文件并跳转到匹配的行。

grep
点击浏览大图

M-x man

显示man帮助文档。

man
点击浏览大图

这里列了一些更多的工具:

命令 描述
M-x calculator 一个简单的计算器
M-x calendar 日历
M-x phases-of-moon 显示接下来的四分之一个月

调用shell命令

如果你想到执行一个简单的shell命令,这些命令将不需要切换到xterm,也不需要启动一个新的Emacs shell buffer:

命令 描述
M-x shell-command或M-! 执行一个命令,在新buffer中显示结果
M-x shell-command-on-region或M-| 执行一个命令,当前区域作为命令输入,在新buffer中显示结果

这些命令,如果加前缀C-u就可以插入输出结果到当前buffer,而不是使用临时buffer。

版本控制

Emacs帮你管理和编辑带版本控制的文件。Emacs支持CVS、Subversion、bzr、git、hg和其它版本管理系统,但Emacs提供了统一的接口,叫做VC,而不用管你在使用的版本管理软件。

Emacs会自动检测处于版本管理下的文件,并在mode行上显示如CVS-1.14来指示版本管理软件名字和当前的版本。

如果你修改了文件,M-x vc-next-action或者C-x v v将提交当前文件(提示你输入log信息)。(在需要锁定的版本管理系统中,这个命令也可帮你请求锁。)

VC提供了版本管理相关的其它命令:

C-x v =
显示当前文件中你修改引起的差异。

C-x v ~
提示你输入版本号,然后在另一个窗口中显示当前文件的指定版本。

C-x v g
Displays an annotated version of the file showing, for each line, the commit where that line was last changed and by whom. On any line you can press L to view the log message for that commit or D to view the associated diff.

C-x v l
Displays a log of previous changes to the file. When the cursor is on a particular log entry, you can press d to view the diff associated with that change or f to view that version of the file.

See (info "(emacs)Version Control") for more information.

Some special features are enabled when you are looking at a diff (whether from a file, or one produced by VC). Emacs lets you move around in a diff by hunks or files, apply individual hunks to a file, reverse a diff, and do other operations useful for reading or manually editing diffs.

See (info "(emacs)Diff Mode") for more information.

编辑远程文件

Emacs can edit remote files transparently (as if they were local) using a feature called Tramp. Whenever Emacs asks for a file, you can indicate a remote file like so: /myname@remotehost:/remote/path/to/file. Emacs retrieves the file over SSH, FTP, or another method and takes care of saving it when you're done. With Tramp you can edit files on different computers using a single Emacs session, even if Emacs is not installed on the remote side.

You can also use Tramp to edit local files with another user's permissions. You can edit files with root privileges via sudo: /sudo::/etc/file, or via su: /root@localhost:/etc/file.

See (info "(TRAMP)") for more information.

Emacs服务器

Some people like to keep only a single instance of Emacs open and edit all their files in there. Doing this has a few advantages:

Alas, when you type emacs in a shell to edit a file (or when $EDITOR is invoked by an external program), a new instance of Emacs is started. You can avoid this by using emacsclient, which instead opens a new frame connected to an existing instance of Emacs:

  1. In your existing instance of Emacs, type M-x server-start. Or add (server-start) to your .emacs file to make it do that automatically at startup.
  2. To edit a file, type emacsclient -t FILENAME at a prompt. You can also change your $EDITOR to emacsclient -t if you're using programs that automatically invoke $EDITOR. (emacsclient -t opens a new frame on the terminal; alternatively, emacsclient -c opens a new X frame.)
  3. When you're done editing, type C-x C-c, which closes the frame.

For more information, see (info "(emacs)Emacs Server").

用Emacs做一些好玩的事

Emacs even comes with diversions:

M-x tetrisTetris
M-x hanoiTowers of Hanoi game
M-x doctorEmacs psychotherapist

一些常见的Emacs概念

前缀参数

As we've seen, prefix arguments are sometimes used to indicate repetition:

C-u 10 C-fForward 10 characters
C-u M-aBackward 4 sentences

We've also seen a prefix argument used to modify the following command (the numeric argument, if provided, is ignored):

M-x shellCreate or switch to shell buffer named *shell*
C-u M-x shellCreate or switch to shell buffer with specified name

If you ever get confused, the documentation for any command (accessible with C-h f or C-h k) describes the effect of the prefix argument, if any.

See (info "(emacs)Arguments") for more information.

主模式(Major mode)

Every buffer has an associated major mode, which alters certain behaviors, key bindings, and text display in that buffer. The idea is to customize the appearance and features available based on the contents of the buffer.

Emacs ships with dozens of major modes for editing widely used programming languages, markup languages, and configuration file formats. These major modes tell Emacs how to:

Some commands we've seen, like M-x dired, M-x compile, and M-x shell, in fact use their own special major modes to make their buffers provide certain features (such as highlighting compile errors and making them clickable).

The current major mode is displayed in the mode line. The last thing on the mode line should be one or more items in parentheses, like (Python Narrow). The first of these is the name of the major mode.

You can switch modes in an existing buffer by using M-x and the name of the mode:

M-x java-modeMode for editing Java files
M-x python-modeMode for editing Python files
M-x text-modeMode for editing text files
M-x fundamental-modeMode with no specializations at all

Emacs is very good at determining the right mode to use when you open a file, so you'll rarely have to use the above commands.

These are examples of the commands provided by language major modes:

LanguageSome special commands available
LispManipulate s-exps in various ways; execute expressions
PythonIndent, unindent blocks; run code in Python shell
HTMLInsert and close tags; preview in browser

In almost all cases, major modes for unsupported formats are available as extension packages. You can find many of them on EmacsWiki.

See (info "(emacs)Major Modes") for more information.

副模式(Minor mode)

Every buffer can also have any number of minor modes, which are extra pieces of functionality you can enable, independently of each other and of the major mode. Minor modes are listed in the mode line after the major mode inside the parentheses. Here are a few commonly used ones:

M-x auto-fill-mode

Wraps your lines automatically when they get longer than 70 characters.

M-x flyspell-mode

Highlights misspelled words as you type.

M-x follow-mode

If you have a buffer displayed in two windows side by side, follow-mode forces them to scroll together such that the text displayed in the second window comes right after the text in the first window, and moving your cursor off the bottom of the left window causes it to appear at the top of the right window:

Some minor modes are global, i.e. they affect the behavior of the entire editor, rather than just that of a specific buffer.

M-x icomplete-modeIn the M-x prompt (and elsewhere), show completions as you type
M-x iswitchb-modeShow all buffer names when you switch buffers with C-x b

See (info "(emacs)Minor Modes") for more information.

If you need help with a particular mode, C-h m describes the active major and minor modes. The mode description often lists important commands which are useful in that mode, which is helpful when you're learning to use a new mode.

minibuffer

The minibuffer (the space at the bottom of the frame) is where Emacs prompts you for input in most situations: for a command, when you type M-x; for a file name, within M-x find-file; for an Elisp expression, within M-x eval-expression, etc. Here are some features common to most minibuffer prompts:

给初学者的提示

遇到紧急情况时……

Here's what to do if you've accidentally pressed a wrong key:

C-g also cancels a long-running operation if it appears that Emacs has frozen.

配置键盘和终端

Some Emacs users remap their Caps Lock key to act as an additional Ctrl key, because it is easier to reach. See instructions for moving Ctrl.

Due to your keyboard or terminal configuration, you may find that some keys seem to do the wrong thing:

If your DEL key is not working (sometimes, typing DEL brings up a help screen, as if you typed C-h), try M-x normal-erase-is-backspace-mode.

If your meta key is not working, in order to type a key that contains meta, you can instead type ESC, then the remaining keys. For example, ESC x is the same as M-x, and ESC C-s is the same as C-M-s.

常问的一些问题

Emacs comes with a FAQ which explains how to perform many commonly requested tasks; press C-h C-f to read it.

迁移到Emacs

Emacs有大量的选项来帮助从其它编辑环境转换过来。

Windows用户

在Windows里,关键的几个命令是C-z,C-x,C-c,C-v。不幸的是,在Emacs里这些快捷键有其它用途(挂起、前缀、前缀、下一页)。你可以从菜单里打开“Cua mode”,这些快捷键就变回撤销、剪切、复制、粘贴了。Cua mode也使得可以像Windows里用Shift和箭头来选择文本。

既然C-x和C-c对Emacs操作来说如些的重要(他们是许多命令的前缀按键),当你选中了一些文本时,Cua mode就只绑定了C-x和C-c来剪切和粘贴。

你可以输入C-h f cua-mode RET来学习更多关于Cua mode的内容。

vi/vim用户

Viper(M-x viper-mode)是一套在Emacs里模拟vi编辑形为的模式。它可以根据你想让Emacs更像vi程度,来提供vi依赖性的不同等级。

更多关于Viper的信息请参考(info "(viper)")

Emacs资料

如果你想学习更多Emacs的内容,GNU Emacs手册 (C-h r)最好的资料。一些Emacs功能有单独的手册 (C-h i d)。

GNU Emacs FAQ (C-h C-f)回答了初学者的很多问题,比如Emacs怎样工作的,如何配置来做特定的事情。

EmacsWiki有很多可下载的Emacs的扩展(译者注:也常叫插件),还有使用和定制Emacs的技巧。

你可以在help-gnu-emacs邮件列表上面提问。

阅读数:
更多文章:文章目录
解惑专区
(支持markdown插入源代码)
欢迎使用ExASIC订阅服务
仅用于ExASIC最新文章通知,方便及时阅读。
友情链接: IC技术圈问答ReCclayCrazyFPGA