Emacs是一种功能超强的文本处理程序,或者文本编辑器。做者Richard Stallman(主
页:http://stallman.org/)。基础部分是使用C语言编写的,其余部分是用Emacs Lisp编写的。深层次的话,C语言构成了emacs的底层,包括Emacs Lisp的解释器。而Emacs Lisp则是负责了Emacs Lisp的建筑物上层,也就是包括咱们平时用的扩展、界面等。编程
Emacs只是一文本编辑器,这和Windows上的Visual Studio等等不一样的是,VS集成的是完整的开发功能,包括编译器、编辑器、调试器等等。而Emacs只是一个文本编辑器,固然不要所以而是否认Emacs的强大。Emacs能够作的:小程序
收发电子邮件、经过FTP/TRAMP编辑远程档案、经过Telnet登陆主机、上新闻组、登录IRC和朋友交流windows
查看日历、撰写文章大纲
架构
对多种编程语言的编辑、调试程序,结合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等等
编程语言
玩游戏、计算器、记日记
编辑器
煮咖啡、管理日程,Task,ToDo,约会等、我的信息管理、目录管理函数
文件比较、阅读info和man文档、浏览网站工具
他确实只是一个文本处理器,你能够将之视为伪编辑器的操做系统。而这是由于其与unix/Linux系统的整合程度而起的,换句说,若是Richard Stallman能够早点开发出内核,而不是等到Linux的话。Linux/Unix的设计思想之一就是:简单,使用足够的小程序来支撑起这世界,而是Emacs所作的就是利用这些工具,来打造本身,完成本身的系统。于是,Emacs强大的另外一点是,有足够的扩展,不管是过去的auto-complete或者是如今的Android-mode等等。故而,咱们能够在《架构之美》之中看到关于其的介绍,而是他的特性也是如此,助长的特性是其优点。网站
也因些,Emacs是Unix世界的两大神器之一,另一个是Vim/Vi。spa
Emacs的设计预想是须要时只须要启动一次,而后一直运行着。咱们能够对窗口进行分割,打开多个文件进行编辑。Emacs的三种基本对象是:帧(frame)、窗口(window)、缓冲区(buffer)。
Emacs中的frame就是操做系统中的窗口.
buffer是文件的内存表示, windows则是显示buffer的区域, 一个frame中能够有多个window, Emacs则能够有多个frame.
窗口. 因为Emacs很早就诞生了, 它的窗口概念和如今基于窗口的操做系统中的窗口概念不是同样的. Emacs中的窗口是用来显示buffer的一个区域. 它并不像操做系统中的窗口拥有本身的标题栏,系统菜单栏.
缓冲区. Emacs并不直接对文件进行操做, 它是把文件加载进buffer, 用户直接操做buffer, 只有当用户肯定把buffer中所作的修改写人文件时, Emacs才把buffer中的内容写入文件. buffer实际上就是一个内存缓冲区, 这和通常编辑器中都同样, 应该很好理解.
Emacs最基础的部分是用c写的,其余部分都是用Emacs Lisp语言写的,Emacs Lisp语言是基于lisp语言的. lisp是LISt Processor的缩写, 即链表处理语言, 因此lisp语言的操做都是基于链表的, 它的语法也是链表结构, 链表第一个元素表示函数名, 其余元素是参数, 好比一般语言中的a+b, 在lisp就是(+ a b)
mode有major mode和minor mode之分, 每一个缓冲区对应一个major mode, 也只有一个major mode, 可是能够有多个minor mode. Emacs对每一种文件都有一个mode.
你对Emacs全部的操做都是对Emacs的命令的调用。好比,你在text-mode里,当你按下任何字母键进行编辑的时候,其实是调用的emacs的命令self-insert-command.
Emacs中Control键用C表示,Alt键用M表示, 即: C-c表示Control C, M-x表示Alt x.
除掉以Alt键开头的,好比Alt a,Emacs中的快捷键基本上都有一个前缀,Emacs中最多的快捷键前缀就是C-x,C-c,前缀表示,你没必要要一块儿按下前缀和后缀,能够先按下前缀,Emacs会等待你按下剩余的快捷键,这样Emacs中的快捷键按起来很是的方便。
键盘映射. Emacs的快捷键是经过keymap来控制的. 有全局和局部的keymap. 每一个mode都会有一个本身的局部的keymap, 局部的keymap会覆盖全局的keymap, 另外若是对应的major mode有开启的minor mode, 并且这个minor mode有keymap的话, 这个minor mode的keymap会覆盖major mode的keymap.