• 1 定位命令

  • 2 格式重排

  • 3 注释

  • 4 自动补全命令

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

  • 6 其他工具

    • 6.1 imenu菜单

    • 6.2 which-func-mode

    • 6.3 show-paren-mode

    • 6.4 electric-pair-mode

    • 6.5 electric-layout-mode


1 定位命令

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的结果,甚至是编译的输出来定位. 但是这部分就属于比较高级的内容,暂不再此阐述  

下面的表格列出了这些常见的命令及说明

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

2 格式重排

最常使用的格式重排命令是TAB,在编辑中按下TAB键,Emacs会自动对正在编辑的行进行重排.  

若想同时对多行进行格式重排,则可以用鼠标选中要缩进的代码块,然后按下TAB键,则Emacs对所有选中行进行重排.

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

3 注释

Emacs中可以使用M-;来完成各种注释的操作.  

如果你想在编辑一行语句的后面添加上注释,可以按下M-; ,Emacs就会在该行语句后面自动添加上行注释符号,并将光标移动到待输入注释的地方.  

如果光标所在行的语句后面已经有了行注释,再按下M-;则会对该注释进行格式重排,使用这种方式可以使得多行代码的注释对齐  

若我们想临时注释掉一段代码,可以选中待注释的代码端,然后按下M-; ,Emacs会在代码段的每行代码前添加行注释符号,从而注释掉这段代码  

若我们又想启用这段注释掉的代码,只需要选中这段注释掉的代码,再按下M-; ,则Emacs会去除每行代码前的注释符号,从而启用这段代码段

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

4 自动补全命令

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

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

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

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

5 浏览程序大纲(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来切换隐藏/显示当前块.   灵活使用这几个命令,可以方便的浏览程序的大纲

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

6 其他工具

6.1 imenu菜单

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

6.2 which-func-mode

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

6.3 show-paren-mode

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

6.4 electric-pair-mode

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

6.5 electric-layout-mode

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