? 优质资源分享 ?
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
? Python实战微信订餐小程序 ? | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
?Python量化交易实战? | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
前言:最近使用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混合使用,例如:image-20220419103932129 | |
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-@ | 为空格键,选择需要被移除的文本高亮,如图: image-20220416104621000 | |
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 | 保存文件,如图: image-20220419101727249 | |
C-x C-w | 写入文件,类似于Save as,另存为 | |
缓冲区命令 | C-x C-b | Emacs将每个编辑中的文件存储在缓冲区(buffer)中,每打开到一个文件,就开辟一个缓冲区。该命令用于列出所有缓冲区(注意缓冲区名称与文件名并不总是相同)。例如:image-20220419102253389 |
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进行字符串替换,会将光标之后的所有符合条件的文本进行替换:2image-20220419115347006。多字符命令可以使用键进行自动补全,如果有多个可补全的命令,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-x 命令后输入sml可用于开启sml语言的命令行模式(交互模式)。所以Emacs只是一个工具,具体到各种语言的使用时,还有非常多需要学习的地方。
转载请注明:xuhss » Emacs基础使用教程及常见命令整理