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

linux编程之emacs

在linux下编程,有两个编辑器是肯定会听说的,vim和emacs,个人感觉这两个编辑器和IDE比也真是有过之而无不及啊。我自己先学了em

在linux下编程,有两个编辑器是肯定会听说的,vim和emacs,个人感觉这两个编辑器和IDE比也真是有过之而无不及啊。

我自己先学了emacs,而且用起来很顺手,所以暂时也没学习vim的打算,这里只能说说emacs。

当然不是说vim不好,关于这两个编辑器的口水已经够多了,我只能引用某个大牛的一句话:“emacs有的功能,vim都有,反之亦然。”其实只要能把活漂亮的干完,你喜欢用记事本也可以,不是么?这两个编辑器主要的不同是调用命令的方式,emacs我写在下面,vim写在最后了吧。根据个人喜好挑一个吧。

emacs安装很简单,windows下有安装包,linux下直接用自带的软件管理器找到安装就ok了,比windows还简单。如果用的环境是我之前博客中推荐的cygwin,那么重新运行setup.exe,在更新软件包那一步搜索emacs,然后安装就好了,可以参考g++的安装。

不管装在哪,emacs启动后样子和下面这个图类似:


中间最大那片黑色的是主要的编辑区,图中是emacs启动后的一些帮助,打开一个新文件后编辑区就什么都没有了。这个编辑区的正式名字叫buffer,直译过来就是缓冲区。emacs里面打开多个文件就是打开多个缓冲区。和缓冲区对应的一个概念是window,直译就是窗口了,像下面这个图里面我打开了两个窗口,可以同时查看两个文件:


不同窗口里面的内容可以是不同的缓冲区,也可以是一个缓冲区。如果你喜欢,可以同时开10个8个窗口,效果图:


再下面那条白线是状态栏,一个窗口一个状态栏,里面显示当前buffer的名字,光标所在行号等信息。

最下面那个黑线是minibuffer,迷你缓冲区,这个迷你缓冲区看上去不起眼,但是作用相当之极其大,emacs的所有命令调用都显示在这里面。

介绍到这就该介绍最关键的emacs下面的命令调用了。所有的命令都有名字,比如打开文件是find-file,把当前窗口横着切是split-window-horizontally,竖着切是split-window-vertically,要通过名字调用命令,需要先按下alt+x,这时候minibuffer里面会变成M-x,然后光标停在后面,你就可以输入命令,然后回车执行了。

这些命令很长,虽然你可以输入几个字符然后使用tab键自动补全命令,但是效率还是很低,所幸emacs支持快捷键,比如默认的打开文件的快捷键是C-x C-f,就是先按ctrl+x,然后按ctrl+f。emacs命令通常有两个修饰,C-和M-,C-表示使用ctrl键,M-表示使用alt键,比如上面那个输入命令的命令M-x。有的命令需要按shift,但是没有标示,比如替换的快捷键是M-%,那个百分号是shift+5,所以整个命令就是alt+shift+5 。

比如打开shell的命令:shell,就可以在emacs里面获得一个命令行。有说法说emacs不是编辑器,是一个操作系统,你要是用了这个命令肯定也这么感觉。知道怎样使用命令,你就学会使用emacs了;知道命令的快捷键,你用起emacs来速度那叫一个飞快啊,真的是超级快~

知道怎样使用命令后,剩下的就是要知道emacs里面有哪些命令了,我把和linux编程相关的一些命令的快捷键和一些解释列在下面,其他的,大家用的过程中会发现的:

打开文件:C-x C-f,如果你输入文件名的文件存在,则打开文件;如果不存在,打开一个对应名字的buffer,保存那个buffer会保存一个相应的文件;如果打开的是一个目录,那么会列出目录里面的子目录和文件,和C-x d一个效果按v查看,q退出,n向下,p向上,如果你不知道我再说什么,试一试就知道了,这个用法再查看大型工程的源代码时候特别方便,比如linux内核。
保存文件:C-x C-s,没什么说的,就是把buffer里面的内容保存在对应的文件里面。
添加注释:M-; (alt+分号),特别是某一行有代码,爽死你。
插入一个文件:C-x i,做usaco上面的题目,和查找替换一起使用可以很快的建立一个模板。
查找:C-s
替换:M-%
如果当前只有一个window,从一个buffer跳到另一个buffer:C-x b         查看所有打开的buffer:C-x C-b
横着切窗口:C-x 2   竖着切窗口:C-x 3     除了当前窗口关闭其他所有窗口:C-x 1       关闭当前窗口:C-x 0
从一个window跳到另一个window:C-x o
编译:M-x compile,没有默认快捷键。当然你需要一个Makefile,之后再介绍。
调试:M-x gdb,没有默认快捷键。
关闭emacs:C-x C-c

最后关于emacs要说的是,emacs没默认快捷键的命令,你可以自己设置快捷键;emacs不支持的命令,你可以自己写脚本扩展emacs。这些内容,以后再说了。


想要学vim的朋友,可以看看这个网站点击进入,交互式的在线教程,缺点是没有说怎么打开shell,怎么在里面编译、调试等。

一个工具要用的好,关键就是多练。如果你没有练手的内容,推荐你去usaco上面做题,参考这篇博客的“第一个程序之后”那一小节,点击进入


Reference:

Debra Cameron, James Elliott, Marc Loy, Eric Raymond, Bill Rosenblatt.  《Learning GNU Emacs , third edition》. 2004


推荐阅读
  • BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • 深入解析:Android开发进阶之Vim编辑器基础操作与应用
    本文深入探讨了Android开发中使用Vim编辑器的基础操作与应用。通过详细解析Vim的基本命令、配置文件和常用插件,帮助开发者提高代码编写效率。文章还介绍了如何在Android开发环境中高效利用Vim,包括集成开发环境(IDE)的配置和常见问题的解决方法。适合初学者和有经验的开发者参考。 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 如何在Linux环境中高效地创建、编译与运行C语言代码
    本文面向第一次在linux尝试写C语言程序的新人。有经验的请绕行。C语言用法不是本文介绍的关键,本文只是引入如何第一次在linux系统下编写、编译和执行一个简单的c程序。学会后请自行深入 ... [详细]
  • Lunix历史及如何学习
    1.Lunix是什么1.1Lunix是操作系统还是应用程序Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • Ubuntu系统中实用快捷键汇总及Windows 10快捷键补充说明
    在Ubuntu系统中,用户可以通过多种快捷键提高操作效率。例如,使用Alt+Tab可以在当前桌面上的不同应用程序之间快速切换,而Super+D则用于在桌面与应用程序之间进行切换(Super键在Linux系统中相当于Windows系统中的Windows键)。此外,本文还补充了部分Windows 10的快捷键,帮助用户在不同操作系统间更加自如地切换。 ... [详细]
  • 本文深入探讨了层叠样式表(CSS)的核心原理与应用技巧,旨在帮助读者全面理解CSS的工作机制。从选择器、属性到布局模式,文章详细解析了CSS的关键概念,并通过实例展示了如何高效运用这些技术,提升网页设计与开发的水平。 ... [详细]
  • 如果你对 IntelliJ IDEA 的界面不太熟悉,可能会对如何在 Android Studio 中执行一些常见任务感到困惑。本文提供了多种开发技巧和实用窍门,帮助开发者更好地利用 Android Studio 的强大功能,包括界面导航、代码调试和项目管理等方面,使开发过程更加高效顺畅。 ... [详细]
  • 在Linux/WSL环境中,本文对Shell任务的并行处理进行了详细的测试与分析。通过多种并行处理技术,如GNU Parallel和xargs,探讨了如何有效提升任务执行效率和系统资源利用率。实验结果表明,合理配置并行参数能够显著缩短任务完成时间,提高系统整体性能。此外,文章还介绍了Shell脚本编写的基本原则和最佳实践,为读者提供了实用的参考。 ... [详细]
author-avatar
一千万223
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有