Emacs配置与扩展技术_第1页
Emacs配置与扩展技术_第2页
Emacs配置与扩展技术_第3页
Emacs配置与扩展技术_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    emacs配置与扩展技术    鲍彬 武云涛摘  要:emacs是高扩展性的编辑器,可通过配置支持多种复杂编辑模式。不同于其它编辑器的简单配置脚本,emacs的配置和扩展是通过 emacs-lisp语言完成的,emacs配置普遍被认为是较为复杂的和难以掌握的。文章着重探讨并分析了emacs配置与扩展的相关技术。关键词:emacs;lisp;配置;扩展:tp391 文献标志码:a :2095-2945(2019)16-0134-03abstract: emacs is a highly extensible editor that can

2、 be configured to support a variety of complex editing modes. unlike the simple configuration scripts of other editors, the configuration and extension of emacs is done through the emacs-lisp language. emacs configuration is generally considered to be more complex and difficult to master. this paper

3、 mainly discusses and analyzes the related technologies of emacs configuration and extension.keywords: emacs; lisp; configuration; extension1 emacs简介emacs是著名的文本编辑器,最初是在上世纪70年代完成。emacs是“editing macros”的缩写,意为宏编辑器。不同于一般的编辑器,emacs具有极强的可扩展性。在文本编辑之外,emacs通过与其他工具结合起来能够支持各种语言程序开发,上网和新闻组,文件和系统管理,撰写文章等一系列功能,成

4、为一个具有强大功能且高度集成的生产力工具。2 emacs与常见文本编辑器配置方式比较2.1 emacs和vi比较emacs和vi是深受程序员喜爱的两大编辑器,各有特点。vi是著名的轻量级文本编辑器,在完成轻量级任务时有很大优势,比如简单调整系统配置,远程终端的简单访问和操作。vi的强大之处在于其编辑快捷键易用,和终端无缝结合。相比之下,emacs复杂度要高很多,但在处理复杂任务,大量不同类型的文件时,emacs将更有优势。值得注意的是,vi也需要通过一定配置才能发挥较强的功能,比如大部分程序员为了方便开发,还是结合多个较复杂插件将vi配置为集成开发环境。在这个角度上,vi扩展的编写不如emac

5、s用lisp语言开发那么方便,虽然理论上vi也是可以用通用语言python去扩展的,但毕竟不是原生的扩展语言。事实上通过合理配置,emacs其实是可以模拟大部分vi的特性的,这也是目前比较流行的模式,不使用原生的vi,而是把vi的特性結合进入emacs中,两者兼用。这个思路是目前大多数流行的emacs配置采用的。2.2 emacs和sublime text,vs code比较近些年也有一些新的可扩展文本编辑器,比较有名的有sublime text,微软写的vs code,这些工具也都意在提供高可扩展性的编辑工具,尤其是多种语言程序的开发工具。这些编辑器优势在于易于上手,其扩展性更多的是通过官方

6、丰富的插件来完成的,对于新手更加友好。用户也可以通过简单脚本文件定制编辑器特性,不过其所支持的定制语言不够强大,定制复杂配置是不容易的。相比而言,emacs的可扩展性更强,定制方式更加灵活,所以很多人依然选择使用emacs而不是转入新的文本编辑工具。对于经验丰富的编程人员来讲,emacs更容易按照自己的工作习惯加以配置和扩展,在众多工具中依然是最佳的选择。emacs的另一个优势之处是可以和系统结合,不仅仅限制在集成开发环境这样一个功能,而是可以扩展为可以替代office,图片浏览器,网页浏览器等软件的多功能集成工具。这是目前任何一款可扩展文本工具都是无法做到的,这也是emacs作为一个古老软件

7、至今依然保持开发活跃的原因。当然,emacs开源和社区高度开放的特性也是其优势之处和更容易扩展的原因之一。3 emacs配置与扩展技术3.1 emacs-lisp扩展编程emacs配置与扩展可以通过emacs-lisp语言开发。emacs-lisp语言是lisp语言的一种方言。lisp是早期的程序设计语言之一,其语言设计源于lambda计算理论,语言简洁并能够优雅的支持目前主流的程序设计范式。emacs-lisp包含完整的lisp语言特性,这是由于emacs底层用c语言实现了lisp的解释器和基本的内置编辑函数。因此emacs的大部分功能是由emacs-lisp实现的,同样也可以用emacs-

8、lisp语言方便的进行扩展,进一步emacs-lisp语言也可直接访问emacs的内置功能函数接口。这样的特性使得使用emacs-lisp进行程序设计和emacs配置开发非常方便。3.2 emacs配置加载emacs的入口文件可以是/.emacs或者/.emacs.d/init.el。常见的方式是使用后者,因为后者有利于模块化配置程序。emacs配置一般是有一定规模的复杂程序,模块化设计可以使配置程序易读易改。emacs-lisp语言的每一个模块对应一个文件,在文件尾部使用provide使模块可被其它程序引用,引用方式是通过require指定,从而加载模块中的所有变量和函数,使其对当前程序可见。为了模块能被emacs发现并正确加载,通常需要在init.el文件开始部分使用load-path指定所需所有模块的路径,作为加载配置的起始点。emacs加载模块并非只有这一种方式,事实上,为了加快emacs的启动速度,不是所有模块都在init.el初始化时加载。最好的加载实践是在emacs启动时仅加载基本模块,其它功能模块时在被使用时动态加载,比如启动时不加载python开发相关模块,而且在打开python文件进行编辑时才加载。有两种方式可以实现动态模块加载,不使用第三方工具的情况下,可以用autoload设置动态加载的函数,结合宏with-eval-after-load指定动态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论