前言:最近使用Emacs,因此整理了官方中文教程中的一些知识点和常用的命令,方便查阅使用。


对于用习惯Windows的人来说,想要入门Emacs不是一件特别容易的事,但好在Emacs提供了官方的教程文档,比较清晰和详尽的讲述了Emacs的基本使用方法。

首先是Emacs的基本布局,如图:

C-h-h查看帮助窗格

Emacs提供了大量帮助信息,可以在帮助窗格中查看。

C-h t 官方教程

C-h t可以打开官方的使用教程,本文档基于此进行整理。

首先需要理解Emacs命令(快捷键)的构成:

值得注意的是,Emacs的命令提示中短横线-表示组合键同时按下

例如C-h-h,就是在按下CONTROL键之后,按两次h;而C-h h,则是在按下CONTROL键之后按一次h,松开CONTROL键再按一次h。

根据官方教程介绍:META 系列组合键用来操作“由语言定义的单位(比如词、句子、段落)”,而 CONTROL
系列组合键用来操作“与语言无关的基本单位(比如字符、行等等),后面的快捷键可以体会到这一点。

Emacs各种基础常用命令介绍:

命令 作用
常用控制命令 C-x C-c 退出Emacs
C-z 挂起Emacs,回到shell但不杀死Emacs进程。在常用的 shell 中,通常可以用“fg”或者“%emacs”命令再次回到 Emacs 中
C-g 退出正在运行的命令(包括C-u命令)
C-/ 或 C-_ 或 C-x u 撤销 Undo,可用C-u命令指定次数
帮助命令 C-h-h 或 C-h ? 打开帮助,可以查看与帮助相关的命令有哪些
C-h b 列出当前模式下的所有组合键命令及其效果
C-h c 其后接某个命令,用于在小缓冲区查看其作用,例如 C-h c C-p
C-h k 其后接某个命令,用于打开一个新窗格显示更多帮助信息
C-h f 其后接函数名,解释一个函数,例如C-h f previous-line
C-h a 相关命令搜索,用于列出与关键字相关的所有长命令名称(可用M-x执行的命令),例如C-h a file
C-h i 打开名为“*info*”的特殊缓冲区,可以阅读安装的软件包使用手册
ESC ESC ESC 通用的“离开”命令,可以用于关掉多余窗格、离开小缓冲区,或者退出“递归编辑”模式(状态栏的编辑模式小括号外出现大括号表示进入递归编辑,例如【比如在用 M-% 进行交互式替换的时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式,这就是所谓的递归编辑。不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的命令和其参数(arguments)】
移动光标命令 C-v 移动到下一屏,相当于PageDn
M-v 移动到上一屏,相当于PageUp
C-l 重绘屏幕,将光标所在行置于屏幕中央
C-p 上一行,p代表previous
C-n 下一行,n代表next
C-b 向左移,b代表backward
C-f 向右移,f代表forward
M-b 向左移动一个“语言单位”(英文移动一个单词,中文移动到标点符号)
M-f 向右移动一个“语言单位”(同上)
C-a 移动到一行的头部
C-e 移动到一行的尾部
M-a 移动到句子的头部
M-e 移动到句子的尾部
M-< 移动到所有文字(文档)的最开始
M-> 移动到所有文字(文档)的最末尾
数字参数命令 C-u (或按住META不放) 指定数字作为其后命令的参数,如C-u 8 C-f 会向前移动8个字符,C-u 8 * 会输入8个*
窗格命令 C-x 1 关闭其他窗格,保留光标所在窗格,注意是数字1不是小写字母l
C-x 2 分隔出两个垂直窗格,水平分隔线
C-x 3 分隔出两个水平窗格,垂直分隔线,可以和C-x 2混合使用,例如:
C-x 0 关闭当前光标所在窗格,注意是数字0
C-x o 将光标移动到下一个窗格,注意是小写字幕o
窗口命令 M-x make-frame 窗口由多个窗格及其菜单、滚动条、回显区等组成。只有在图形界面下能够显示多个窗口,文本终端中只能显示一个窗口。该命令用于创建一个新的窗口(相当于Emacs多开)。
M-x delete-frame 删除选中的窗口
插入删除命令 对应Backspace键,删除(Delete)光标前的一个字符
C-d 相当于Delete键,删除(Delete)光标后的一个字符
M- 移除(Kill)光标前的一个词,可粘贴
M-d 移除(Kill)光标后的一个词,可粘贴
C-k 移除(Kill)光标到行尾的字符,可粘贴。其后所有的行都向上移动。单独的 C-k 会把一行的内容移除,而第二个 C-k 则会移除换行符,但如果同时使用C-u命令,则会将多行连同其后的换行符一起移除,而不仅仅是重复 C-k 而已。比如 C-u 2 C-k 会把两行以及它们的换行符移除
M-k 移除(Kill)光标到句尾的字符,可粘贴
C- 或 C-@ 为空格键,选择需要被移除的文本高亮,如图:
C-w 剪切 Cut(Kill),w代表wipe
M-w 复制 Copy
C-y 粘贴 Paste,y代表召回(yank),用于召回前一次移除(Kill)的内容,通过同一个命令移除的内容可以被一次性召回(yank)
M-y 召回上一次之前移除(Kill)的内容,需要先使用C-y命令,再使用该命令。不断重复该命令直到找到想要召回的内容,用C-u可为其指定正或负数参数,表示执行次数和方向
文件命令 C-x C-f 寻找一个文件,输入的文件名出现在底部小缓冲区中(minibuffer)。该命令用于寻找不存在文件时,会创建一个新文件(并在保存文件时最终写入硬盘)
C-x C-s 保存文件,如图:
C-x C-w 写入文件,类似于Save as,另存为
缓冲区命令 C-x C-b Emacs将每个编辑中的文件存储在缓冲区(buffer)中,每打开到一个文件,就开辟一个缓冲区。该命令用于列出所有缓冲区(注意缓冲区名称与文件名并不总是相同)。例如:
C-x b 该命令加缓冲区名称,切换缓冲区
C-x s 保存多个缓冲区
命令集扩展 扩展命令风格 由于Emacs命令众多,不能都对应到CONTROL和META组合键上,所以采用扩展命令的方式来解决,包含两种风格。C-x 字符扩展:在其后输入另一个字符或组合键;M-x 命令名扩展:在其后输入一个命令名。
C-x 扩展 C-x扩展很常见,不赘述
M-x扩展 M-x扩展不常用,例如使用M-x replace-string进行字符串替换,会将光标之后的所有符合条件的文本进行替换:。多字符命令可以使用键进行自动补全,如果有多个可补全的命令,Emacs会在窗格下方的“回显区”(ECHO AREA)进行提示,类似在Shell中按两次Tab的提示
自动保存的恢复 M-x recover file Emacs会定期将编辑的文件写入”自动保存“文件,文件名首尾带有”#“字符,该文件会在正常存盘后被删除。可以使用该命令恢复自动保存的文件。
切换主模式 M-x NAME-mode 命令中的NAME表示主模式的名称,例如fundamental-mode切换到缺省模式,python-mode切换到python模式等
切换Emacs外观主题 M-x customize-themes 用于更换Emacs的外观主题
扩展包查询 M-x list-packages 列出可用的Emacs扩展包
搜索命令 C-s 向前搜索,输入该命令进入“I-search”状态。Emacs搜索命令属于渐进式(incremental)的搜索,搜索与输入同时进行
C-r 向后搜索,输入该命令进入“I-search backward”状态
替换命令 M-x replace-string 在前述M-x扩展部分提到过,用于替换光标之后符合条件的所有文本
M-% 交互式替换,根据用户的输入查询文本,询问并替换

Emacs状态栏介绍:

Emacs回显区上方的一行是状态栏包含当前缓冲区的一些信息,如下图:

(1)编码类型:状态栏第一项为当前缓冲区所编辑文字的编码类型,例如这里的U表示utf-8,c表示中文gbk等。

(2)文本换行方式:编码类型后面是换行符表示方式,主要是三种类型,Unix、Mac和\,分别代表:

  • Unix系统(如linux和近几年的MacOS等)风格,每行以LF结尾,即"\n"
  • Mac系统风格,每行以CR结尾,即“\r”
  • Dos(包括Dox系统和Windows系统)风格,每行以CRLF结尾,即“\r\n”

(3)文本写入权限:第一个*的位置,表示文本是否可以写入,“*”表示可写入,“-”表示只读

(4)文本是否被修改:第二个*的位置,表示缓冲区文本是否被修改,“*"表示已被修改,”-“表示未被修改

(5)当前文件夹:图中-所在位置,表示本地的当前文件夹(工作区)

(6)当前文件名:TUTORIAL.cn位置是当前缓冲区的文件名

(7)光标位置百分比:55%位置表示当前光标位置占全文的百分比,如光标在开头则显示–Top–,在结尾则显示–Bot–。若文件很小,一屏就能显示全部内容,则显示–ALL–

(8)光标所在行:L之后给出光标所在行数

(9)主模式:最后的括号表示当前使用的编辑模式,类似于在VScode中选择使用什么语言。Fundamental表示缺省模式,可用M-x fundamental-mode切换。C-h m命令可以查看主模式。主模式只能有一个。

(10)辅模式:与主模式对应,辅模式提供一些辅助功能,可以独立开启和关闭,如自动折行(Auto Fill)辅模式,使用M-x auto-fill-mode命令开启,启用之后Emacs会在打字超出一行边界(通常为70个英文字符,可用C-x f命令重新设定,例如C-u 20 C-x f)时自动换行,同时,如果在段落中间进行修改,可用M-q手动折行。开启辅模式之后,会在状态栏主模式后方显示。


写在最后:因为Emacs可扩展性非常强,有很多扩展包可以使用,同时也带来了一些组合命令的扩展,例如Standard ML语言编辑模式(sml-mode)下,C-c C-s 命令后输入sml可用于开启sml语言的命令行模式(交互模式)。所以Emacs只是一个工具,具体到各种语言的使用时,还有非常多需要学习的地方。

Emacs基础使用教程及常见命令整理相关推荐

  1. mysql数据库入门教程(2):常见命令大全,语法规范

    1常见命令 前提是先登录客户端 1查询 创建 删除 -数据库 查询数据库 SHOW DATABASES [LIKE '数据库名']: 不区分大小写 :代表要执行以上语句 语法说明: LIKE是可选项, ...

  2. docker 20安装教程及常见命令详解

    本文笔记学习来自B站狂神说 视频链接: https://www.bilibili.com/video/BV1og4y1q7M4?p=14 docker安装 先卸载系统之前的老版本docker sudo ...

  3. 2018年计算机基础应用教程,[2018年最新整理]Word的使用-计算机基础教程.ppt

    [2018年最新整理]Word的使用-计算机基础教程 (4)平均人数的计算.将光标放至末列第2个单元格内,先清除"公式"文本框中已有的公式,再输入"=":从&q ...

  4. 网络基础路由器交换机防火墙常见命令

    路由器 关闭日志 undo info-center enable 查看路由端口IP地址 dis ip int brief 查看路由表 dis ip routing-table 显示acl dis ac ...

  5. linux 常见命令整理记录

    [正则表达式学习记录] 独立成章 [cd]  cd 目录名称 切换到相应的目录 cd  / 进入系统根目录 cd .. 退回到上一目录 cd 或者 cd~ 进入当前用户主目录 [ls] ls -a 列 ...

  6. python 多表查询_Python基础学习教程—MySQL常见的多表联查

    一. MySQL的多表联查 ================================== 表之间的关系有:1对1 1对多 多对多 1. 嵌套查询:一个查询的结果是另外sql查询的条件: 如:查 ...

  7. Redis —— Redis In Action —— Redis 实战—— 基础篇 —— Redis 的常见命令解析 以及 Redis 结合客户端的快速上手使用—— SpringData Redis

  8. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...

    从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...

  9. Emacs基础命令整理 - Unplugged - 博客频道 - CSDN.NET

    Emacs基础命令整理 - Unplugged - 博客频道 - CSDN.NET Emacs基础命令整理 分类: Unix /GNU Linux 2005-06-03 23:45 1649人阅读 评 ...

  10. Linux基础 常见命令 思维导图总结

    该系列文章总纲链接:专题分纲目录 Linux环境 1 Linux基础 常见命令 学习链接 @1 该链接旨在 对Linux系统 从0到1 进行入门级学习,同时对Linux命令有一个基本的了解: Linu ...

最新文章

  1. 2015 Multi-University Training Contest 2 1002 Buildings
  2. 为什么用户体验设计师需要像建筑师一样思考?
  3. Eclipse设置字符编码
  4. 谷歌警告:安卓再现高危漏洞 华为小米等可能被黑客完全控制
  5. python对象点方法_python对象方法、类方法、静态方法
  6. python: line=f.readlines() 后如何消除line中的’\n’
  7. 【腾讯Bugly干货分享】动态链接库加载原理及HotFix方案介绍
  8. jQuery简单介绍
  9. MySQL多元复制_MySQL多源复制解决方案
  10. [Android] Android4.0、4.1在手机上制作fastboot线刷包;
  11. Unity3D_NGUI_安卓APK安装包瘦身实践
  12. 监控mysql锁定状态_MySQL 锁的监控及处理
  13. python并发编程之semaphore(信号量)_Python 并发编程系列之多线程
  14. 《哲学与人生》的读书札记
  15. IP地址,开放端口,http与https的区别
  16. terrasolid时间设置
  17. Lambda拉姆达表达式
  18. 一文看透 Kotlin 协程本质
  19. 基于SIFT+Kmeans+SVM的场景识别,参数需注意的问题(Matlab实现)
  20. idea项目老是重启_idea反复重启服务器

热门文章

  1. Redis_常用数据类型及实践案例
  2. 程序员在线写诗《寒江雪》
  3. 删除QQ空间留言一直频繁怎么办,QQ空间留言一键删除
  4. 中国社会为何多犬儒?
  5. 60+最佳免费 WordPress 主题 – 完整列表(2021年)
  6. 初次使用Chloe(本人小白)
  7. 《功夫熊猫》的人生启示
  8. SH-SSS丨《端到端音视频说话人日志网络》论文线上分享
  9. mybatis系列-03-入门程序
  10. 看我如何自制安全的远程控制工具