1. 犀牛前端部落首页
  2. 资讯杂谈

Emacs基础入门教程(二)Emacs 的基本使用

Emacs基础入门教程(二)Emacs 的基本使用

Emacs 的基本使用

在命令行下执行命令“emacs”,既可以启动 Emacs 编辑器。

Emacs 给人的第一感觉要比 vi 好,主要是因为它是“所见即所得”的编辑器,与我们常用的文本界面的编辑器很像,不需要像 vi 那样要在不同工作模式下来回切换。但是不出几秒钟,你就会发现你彻底错了。因为你不但发现无法保存你刚才录入的内容,甚至如何退出都成了问题(Ctrl+c、Ctrl+d 都不管用,只有 Ctrl+z 能够将他推入后台,然后 kill 掉它)。眼看着界面上的那些“熟悉”的菜单项,怎么你都点不开(在文本界面下的情景,tab 键不管用,鼠标也不管用,图形界面除外)。难道 Emacs 的上面的的那些菜单项都是摆设不成?

Emacs 的菜单项不是摆设,只是需要特殊的快捷键才能呼出,这个快捷键就是“F10”。而且 Emacs 的菜单项也不是在顶部列出的,而是在屏幕下方出现的。呼出菜单项后,按照屏幕提示按下快捷键来展开Ḁ一个菜单项,如“f”键展开“File”菜单项、“e”键展开“Edit”菜单项……Emacs 在这个地方没有返回上一步的设定,如果按错了键,展开了错误的菜单项,你只能选择按快捷键“Ctrl+g”或连续按三次“ESC”键来来关掉菜单,重新按“F10”开始。
快捷键“Ctrl+g”和三次“ESC”键并不只是针对取消菜单而设定的,其实它们能够取消任何没有实际完成的操作。你可能会对我的这个说法感到有些困惑:难道 Emacs 有很多不能实际完成的操作吗,你还要特意强调这一点?我说:是的,会有很多,现在不解释,马上你就明白了。
在 Emacs 中保存刚刚编辑的内容需要使用快捷键“Ctrl+x Ctrl+s”;打开一个文件或创建一个新文件需要使用快捷键“Ctrl+x Ctrl+f”;退出 Emacs 需要使用快捷键“Ctrl+x Ctrl+c”……明白为什么要取消了吧?快捷键这么复杂,难免有中间弄错的情况。估计你现在就已经紧张起来了,是不是想问:Emacs 是不是做什么操作都需各种各样的快捷键啊?是的,Emacs 除了向文档中录入内容之外,都需要使用快捷键。而这些快捷键在背后所做的事
情,实际上就是在执行着由 Lisp 语言所编写的各种“宏”或者命令。每一个快捷键,就对应着一个命令。所以,用 Emacs 用到你手软,是一点都不稀奇的事情。

Emacs 这样设计的好处就是不用像 vi 那样需要在各种工作模式下来回切换,就能够提供各种 vi 所能提供的功能。如果能够熟练掌握,甚至形成条件反射,势必会极大的提高文本的编辑效率。而经验告诉我们,到处充斥着快捷键的软件,很容易会形成条件反射。使用五笔输入汉字的同学们肯定深有体会。你若问他们键盘的字根都是什么,估计得到的回答都是“忘干净了”,但是你要是随便说出一个字,他马上就能告诉你按哪几个键。Emacs 就会有如此的效果,运指如飞的酷劲绝对会让你周围的人对你恨之入骨,因为妞都让你泡了。唯一的不足就是有点浪费脑细胞,那就多吃几个核桃罢。好了,不闲扯了,我们还是回到正题,继续介绍 Emacs 的使用吧。
刚才我们说道,每一个快捷键,都会对应着一个 Emacs 的宏。没错的,就比如执行“保存”功能的“Ctrl+x Ctrl+s”快捷键,它们对应的是 save-buffer 这个宏;而用于退出的“Ctrl+x Ctrl+c”快捷键,对应的则是 save-buffers-kill-terminal 宏。而这些宏实际上在 Emacs 是可以手工执行的,方法就是使用快捷键“Alt+x”,这个时候会在屏幕的左下角出现提示“M-x”,在其后面可以输入具体的宏名,按回车就能执行。如果“Alt+x”不生效(Ḁ些系统Alt 键定义不同),可以使用“Esc x”快捷键。如果对宏名有些记不太准,可以在输入几个字符后,按下“tab”键寻求“补全”功能的帮助。其实学习 Emacs 最主要的就是学习这些宏,或者说命令。而为了简化录入命令的过程,它们绑定快捷键以加快录入速度。Emacs 默认内置了很多快捷键,比较常用的见表所示内容。

Emacs快捷键
序号 命令 快捷键 功能
1 move-beginning-of-line Ctrl+a 光标移动到行首 相当于按 home 键
2 move-end-of-line Ctrl+e 光标移动到行尾,相当于按 end 键
3 forward-char Ctrl+f 光标向左移动一个字符,相当于 left 键
4 backward-char Ctrl+b 光标向右移动一个字符,相当于 right 键
5 next-line Ctrl+n 光标向下移动一行,相当于 down 键
6 previous-line Ctrl+p 光标向上移动一行,相当于 up 键
7 forward-word Alt+f 或 Esc f 光标向左移动一个单词
8 backward-word Alt+b 或 Esc b 光标向右移动一个单词
9 beginning-of-buffer Alt+<或 Esc < 光标移动到文件头
10 end-of-buffer Alt+>或 Esc > 光标移动到文件尾
11 scroll-up Ctrl-v 光标移动到下一页,相当于 page down 键
12 scroll-down Alt+v 或 Esc v 光标移动到上一页,相当于 page up 键
13 set-mark-command Ctrl+<空格>或 Ctrl+@ 开启或关闭标记模式,相当于是切换选中状态
14 mark-whole-buffer Ctrl+x h 相当于文档全选操作
15 kill-region Ctrl+w 相当于 cut 操作
16 kill-ring-save Alt+w 或 Esc w 相当于 copy 操作
17 kill-line Ctrl+k 删除光标到行尾的所有内容
18 delete-char Ctrl+d 删除光标所在的字符
19 delete-backward-char <退格> 删除光标前的字符
20 yank Ctrl+y 相当于 paste 操作
21 yank-pop Alt+y 或 Esc y 相当于循环剪切板中的内容进行 paste 操作
22 undo Ctrl+_或 Ctrl+x u 相当于 undo 操作isearch-forward Ctrl+s 前向增量搜索
23 isearch-backward Ctrl+r 反向增量搜索
24 save-bufer Ctrl+x Ctrl+s 保存文件
25 write-file Ctrl+x Ctrl+w 文件另存为
26 find-file Ctrl+x Ctrl+f 打开或者新建文件
27 save-buffers-kill-terminal Ctrl+x Ctrl+c 保存并退出
28 switch-to-buffer Ctrl+x b 切换已打开的文件。可以按“tab”键寻求“补全”帮助
29 kill-buffer Ctrl+x k 关闭已经打开的文件

原创文章,作者:犀牛前端部落,如若转载,请注明出处:https://www.pipipi.net/897.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注