首先我们应该知道的是,

所谓 Buffer,就是文件在内存中的表示。因为 Emacs 并不直接对文件进行操作,而是把它加载到 Buffer 中供用户操作。只有当用户确定要把在 Buffer 中所作的修改写入文件时,即执行“save-buffer”命令时,Emacs 才把 Buffer 中的内容写入文件。

所谓 Window,就是 Buffer 的显示区域,或者说 View。可见 Emacs 也是按照Document/View 模式设计的。之所以叫 Window 而不叫 View,是因为 Emacs 诞生的很早,它的窗口概念和现代的基于窗口的操作系统中的窗口概念不是一样的。而在那个年月能有Window 这样的概念已经是相当先进了,而且更让你吃惊的是,Emacs 居然支持多窗口。

Frame 就是 Emacs 在操作系统中的实际窗口了。一个 Frame 中可以包含多个 Window,每个 Window 显示一个 Buffer 的内容。而 Emacs 还可以拥有多个 Frame。

Emacs 最基础的部分是用 C 写的,这个最基础的部分就是一个 Emas Lisp 语言的解释引擎,而其它部分就都是使用 Emacs Lisp 语言写的了。所以 Emacs Lisp 语言就是另外一个必须要知道了。Emacs Lisp 语言是基于 Lisp 语言的。Lisp 是 LISt Processor 的缩写,即列表处理语言。Lisp 语言的语法是由一个一个的表构成的,因此而得名。

Emacs 为了能够处理不同的文档,设计了 mode 机制。mode 与普通编辑器中的“代码加亮”有些类似,有 major mode 和 minor mode 之分。每一个 buffer 对应一个 major mode,有且只能有一个 major mode,但是可以有多个 minor mode。Emacs 对每一种文件都有一个mode。比如:“*.c”文件有 c-mode、“*.cpp”文件有 c++mode、“*.java”文件有 java-mode……

通过前面的介绍,我们已经了解到 Emacs 的快捷键非常复杂,所以为了简化描述,大多数资料甚至 Emacs 的官方文档都会使用一些惯用表示法。Ctrl 键统一使用 C 表示,Alt 键用 M 表示。比如退出 Emacs 的 Ctrl+x Ctrl+c,可以使用 C-x C-c 来表示;执行命令的 Alt+x,可以使用 M-x 表示。对于 Alt 键,有一些系统的配置会有别的定义,这个时候可以使用“ESC”键来代替。但是使用“ESC”并不要求按住不放,而是按一下即可,之后再单独按具体的后缀按键就能实现功能。所以我们在前面表述的时候会使用“Alt+x 或 Esc x”已表示区别。除了一些最常用的,如:移动光标、复制粘贴这样的功能之外,Emacs 的大多数快捷键都是有一个前缀的,而最多的前缀就是 C-x 和 C-c。前缀表示你不必要一起按下前缀和后缀,可以先按下前缀,Emacs 会等待你按下剩余的快捷键,如果改变了主意,按“C-g”即可取消掉。这样,Emacs 中的快捷键按起来还是很方便的。

其实 Emacs 的快捷键是由 Keymap 来控制的,有全局和局部之分。每一个 mode 都会有一个自己的局部 Keymap,局部的 Keymap 会覆盖全局的 Keymap。更进一步,如果对应的major mode 有开启的 minor mode,而这个 minor mode 又恰巧定义了 Keymap 的话,这个 minor mode 的 Keymap 会覆盖 major mode 的 Keymap。可见,Emacs 利用 mode 机制可以实现对不同类型文档的细微差异化处理,显然功能可以无线放大并能恰到好处啊。

学习 Emacs 最好的办法就是逼迫自己去使用它,而且你不用因为买不到合适的 Emacs教材而发愁。因为 Emacs 附带了十分强大的联机帮助。最常用的就是《Emacs 快速指南》和《Emacs Manual》。前者拥有多种语言的支持,而且包括简体中文,使用“C-h t”即可打开。后者是最权威的 Emacs 参考资料,记录了 Emacs 的方方面面,适用于使用 Emacs 的任何用户,使用“C-h r”即可打开。除了这些文档之外,Emacs 还提供很多便捷的帮助信息,比如:“C-h f”可以查看Ḁ个命令的文档、“C-h k”可以查看Ḁ个快捷键对应的命令,而“C-h w”则可以查看某个命令具体绑定到了那个快捷键上。对于学习 Emacs 很有帮助的快捷键和命令见所描述的内容。

emacs 获取帮助的命令和快捷键

序号

命令

快捷键

功能

1

describe-variable

C-h v

查看某个内置 Lisp 变量的说明文档。

2

describe-function

C-h f

查看某个内置命令的说明文档。

3

describe-mode

C-h m

查看当前 buffer 对应的 mode 的说明文档。

4

describe-key

C-h k

查看某个快捷键对应的命令。

5

where-is

C-h w

查看某个命令绑定的快捷键。

6

describe-bindings C-h b

查看当前 buffer 所有的快捷键列表。

7

find-function

查看某个内置命令的 Lisp 源代码。

8

find-variable

查看某个内置变量的 Lisp 源代码。

9

apropos

模糊查询内置命令或变量的说明文档。

此外,若想查看某个快捷键的前缀都有那些后缀,可以使用“ C-h”来查看。比

如“C-c C-h”可以列出所以以“C-c”为前缀的快捷键。

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

emacs linux 教程,Emacs基础入门教程(三)使用 Emacs 必知必会相关推荐

  1. java adt入门教程_Android基础入门教程目录

    第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...

  2. C语言基础入门教程/C++基础入门教程(天秀腾飞计划文档,超详细包含习题,个人独创)

    文章目录 前言 1 C/C++的输出 1.1 天秀的第一个程序 Hello World 1.2 输出图形 1.3 输出小猫 1.4 打印中文 2 C/C++的输入 2.1 整数数据类型的输入 2.2 ...

  3. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux: Linux初级,也就是入门linux 前提是需要有一些计算机硬件相关的知识或是有 ...

  4. emacs 自带的简单入门教程

    emacs 自带的教程是 英文版和繁体中文版,下面的内容是利用在线繁体转简单工具生成 有些地方翻译的不精准,凑和看 在emacs 中按下 Ctrl-h t 或者F1 t即可打开自带的此文档 原文:em ...

  5. 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...

    很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...

  6. Android基础入门教程——8.3.1 三个绘图工具类详解

    Android基础入门教程--8.3.1 三个绘图工具类详解 标签(空格分隔): Android基础入门教程 本节引言: 上两小节我们学习了Drawable以及Bitmap,都是加载好图片的,而本节我 ...

  7. Linux大棚版redis入门教程

    后端开发过程中,有时需要考虑系统的实时性,那么缓存系统就派上用场了,当然,现在最常用的当属Redis,这篇文章转自 Linux大棚版redis入门教程 [本教程目录] redis是什么 redis的作 ...

  8. 涨姿势|小众建模软件MakeHuman,人物角色建模基础入门教程(1)

    MakeHuman是一个开源的3D人物角色建模软件,类似商业软件Poser.完全由python代码编写完成.它基于大量人类学形态特征数据,可以快速形成不同年龄段的男女脸部及肢体模型,并对局部体形进行调 ...

  9. Android基础入门教程——4.2.3 Service精通

    Android基础入门教程--4.2.3 Service精通 标签(空格分隔): Android基础入门教程 本节引言: 本节,我们继续来研究Service(服务)组件,本节将会学习下Android中 ...

  10. python免费入门手册-Python 基础入门教程

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. <Python 基础入 ...

最新文章

  1. php t string,PHP中出现意外的T_STRING错误
  2. Arduino可穿戴教程认识ArduinoIDE
  3. python批量分析表格_Python环境下百度Ocr表格批量识别
  4. ASP.NET MVC Music Store教程(1):概述和新项目
  5. 强化学习(五)用时序差分法(TD)求解
  6. android data binding jetpack III 绑定一个方法
  7. 长脖子鹿省选模拟赛 [LnOI2019SP]快速多项式变换(FPT)
  8. vmware服务器虚拟化部署sdn,使用VMware的NSX多面落地软件定义网络SDN视频课程
  9. php代码执行相关函数,关于当前PHP脚本运行时系统信息相关函数
  10. 删除字符串的前置或者后置空格
  11. C语言(CED)从键盘输入一些整数,求出它们的平均值。数据的个数事先不确定,在输入过程中以ctrl+z键(EOF)作为输入结束的标记。
  12. 6.凤凰架构:构建可靠的大型分布式系统 --- 分布式共识
  13. python爬虫requests设置代理ip_干货|Python爬虫如何设置代理IP
  14. 【mfc】解决鼠标钩子被占用焦点后不响应的问题
  15. 小米路由器青春版刷入其他固件
  16. 小白新建C语言程序(VS2019创建C语言编程环境方法详解)
  17. 云计算是什么?新手学习云计算的学习路线
  18. 一点点读懂thermal(一)
  19. 拯救者Y7000电脑一直呼呼呼 声音很大的解决办法
  20. layim php,如何通过LayuiAdminLayIMThinkphpGateway实现小程序多客服接入系统的例子

热门文章

  1. Eclipse启动时 弹出subversive connector discovery
  2. IntelliJ IDEA For Mac 的破解方法
  3. linux终端执行二进制文件命令,Linux下查看二进制文件命令
  4. java读取shp文件_GDAL-java读取shp文件信息
  5. mysql ocp考试大纲_MySQL OCP考试大纲
  6. 产品必备-产品FDD模板(PRD)
  7. 微信公众号开发基本流程
  8. mcgs组态软件中字体如果从左到右变化_MCGS组态软件课件-第5章.ppt
  9. u盘制作双系统启动盘及在移动硬盘上安装Linux操作系统
  10. GB28181协议简介及实践