暗无天日

=============>DarkSun的个人博客

Emacs编辑程序常用命令

定位命令

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自动帮我们回车换行.