• Emacs基础使用教程及常见命令整理


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


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

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

    Snipaste_2022-04-19_17-18-39

    C-h-h查看帮助窗格

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

    image-20220317162520000

    C-h t 官方教程

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

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

    image-20220317164105392

    值得注意的是,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回显区上方的一行是状态栏包含当前缓冲区的一些信息,如下图:

    Snipaste_2022-04-19_15-30-09

    (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只是一个工具,具体到各种语言的使用时,还有非常多需要学习的地方。

  • 相关阅读:
    oracle归档日志增长过快处理方法
    Oracle“死锁”模拟
    Oracle 手工清除回滚段的几种方法
    Oracle 一次 锁表 处理小记
    Oracle中如何判断一个字符串是否含有汉字
    机房收费系统验收总结
    hdu 4747 Mex (线段树)
    Java 5 的新标准语法和用法详解集锦
    java类加载器行为[笔记]
    poj1330Nearest Common Ancestors(LCA小结)
  • 原文地址:https://www.cnblogs.com/ssjxx98/p/16172336.html
Copyright © 2020-2023  润新知