Emacs 编辑程序常用命令

发布于 2023-02-25 18:15:37 字数 3781 浏览 106 评论 0

定位命令

Emacs 提供了很多快速定位的命令,这些命令可以帮助我们快速定位到想编辑的地方,我们可以使用 M-a 直接定位到程序行的开头,使用 M-e 直接定位到程序行的结尾部分。

此外还可以使用 M-f/M-b 以单词为单位向前/向后跳跃,这样比用方向键一个字母一个字母的移动要快得多,当我们在写函数的时候,可以使用 C-M-a 快速跳到函数的头部,使用 C-M-e 跳到函数的尾部,我们还可以使用 C-M-h 选中当前正在编辑的整个函数,然后使用 M-w 拷贝该函数,或者使用 C-w 剪切该函数,然后将光标移动到新的位置,按下 C-y 将剪切的函数移动到新的位置处。

最后值得一提的是,emacs 还能够根据 grep 的结果,甚至是编译的输出来定位,但是这部分就属于比较高级的内容,暂不再此阐述,下面的表格列出了这些常见的命令及说明。

表1  定位命令
命令说明
M-a定位到一行的开头
M-e定位到一行的结尾
M-f向前移动一个单词
M-b向后移动一个单词
C-M-a定位到函数头部
C-M-a定位到函数结尾
C-M-h选中整个函数
M-w复制选中的内容
C-w剪切选中的内容
C-y粘贴选中的内容

格式重排

最常使用的格式重排命令是 TAB,在编辑中按下 TAB 键,Emacs 会自动对正在编辑的行进行重排,若想同时对多行进行格式重排,则可以用鼠标选中要缩进的代码块,然后按下 TAB 键,则 Emacs 对所有选中行进行重排。

表2  格式重排
命令说明
TAB对当前行或选中行进行格式重排

注释

Emacs 中可以使用 M-; 来完成各种注释的操作,如果你想在编辑一行语句的后面添加上注释,可以按下 M-; ,Emacs 就会在该行语句后面自动添加上行注释符号,并将光标移动到待输入注释的地方。

如果光标所在行的语句后面已经有了行注释,再按下 M-; 则会对该注释进行格式重排,使用这种方式可以使得多行代码的注释对齐,若我们想临时注释掉一段代码,可以选中待注释的代码端,然后按下 M-; ,Emacs 会在代码段的每行代码前添加行注释符号,从而注释掉这段代码,若我们又想启用这段注释掉的代码,只需要选中这段注释掉的代码,再按下 M-; ,则 Emacs 会去除每行代码前的注释符号,从而启用这段代码段。

表3  注释命令
命令说明
M-;添加/去除/重排注释
C-u M-;删除注释

自动补全命令

Emacs 中常用的补全命令有两个,一个是 M-/ ,这个命令会将光标前的单词作为前缀,然后扫描当前 buffer 中所有以该前缀开头的单词作为补全的候选单词,供我们选择。

    例如若当前buffer中已经包含了'unWrite unRead',则我们在输入'un'之后按下M-/后,Emacs会先帮我们补全为unWrite,再按一下M-/则回补全为unRead

另一个补全命令是 C-M-i 或者 M-TAB(若在 windows 下会跟任务切换热键冲突,则可以先按下 ESC 再按下 TAB 代替)该命令会调用命令 completion-at-point 来对光标所在的单词进行补全,该命令会调用多种方法来尝试补全(例如从 tag 文件中获取补全信息等等)

表4  补全命令
命令说明
M-/在buffer中选中指定前缀开头的单词作为补全候选
C-M-i / M-TAB / ESC-TAB调用命令completion-at-point进行补全

浏览程序大纲(hs-minor-mode)

Emacs 提供了一种称为 hs-minor-mode 的模式,开启该模式之后可以使我们选择性的隐藏程序的一部分,开启 hs-minor-mode 的方法是执行 M-x hs-minor-mode 开启了hs-minor-mode 之后,就可以使用 C-c @ C-h 来隐藏光标所在的程序块,该隐藏的程序块会消失在屏幕上取而代之的是一个三个点的省略号,这是我们可以使用 C-c @ C-s 来让隐藏的程序块重新显示出来,若觉得记住两个命令来分别隐藏/显示程序块太麻烦,Emacs 还提供了 C-c @ C-c 来切换隐藏/显示当前块,灵活使用这几个命令,可以方便的浏览程序的大纲。

表5  浏览程序大纲命令
命令说明
C-c @ C-h隐藏当前块
C-c @ C-s显示当前块
C-c @ C-c切换隐藏/显示当前块

其他工具

imenu 菜单

通过执行 M-x imenu-add-menubar-index 可以在 Emacs 的菜单栏上增加一个 Index 菜单,通过该 Index 菜单可以快速定位到指定的函数、变量、宏的位置

which-func-mode

通过执行 M-x which-func-mode 可以开启 which-func-mode,开启该模式之后,光标所在的函数名会显示在 mode-line 上

show-paren-mode

通过 M-x show-paren-mode 开启 show-paren-mode 后,如果光标处于开括号前或者闭括号后时,则该括号会被高亮显示

electric-pair-mode

通过 M-x electric-pair-mode 开启 electric-pair-mode 后,若插入一个开括号,则 Emacs 自动补全一个闭括号,并将光标放在括号内等待输入

electric-layout-mode

通过 M-x electric-layout-mode 开启 electric-layout-mode 后,若插入指定的表示一行语句结尾的字符时,Emacs 自动帮我们回车换行

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

深空失忆

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文