热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Emacs编辑程序常用命令

1定位命令2格式重排3注释4自动补全命令5浏览程序大纲(hs-minor-mode)6其他工具6.1imenu菜单6.2which-func-mode6.3show-paren-m
  • 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自动帮我们回车换行.




推荐阅读
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • Copyright(c)1985,1996,1998,2001,2002FreeSoftwareFoundation.Emacs指令通常包含有CONTROL键(有时候以CT ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • 设备模型三(潜谈sysfs)
    前言引出一个问题:假设sysaxx,xx是kobja的属性文件,当对xx进行写操作时,即echo‘1’sysaxx实际上,调用了kobja的ktype中定义的接口函 ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
  • android:EditText属性去边框EditText继承关系:View--TextView--EditTextEditText的属性很多,这里介绍几个:android:h ... [详细]
author-avatar
陈家小女u
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有