是什么使Emacs成为Lisp程序员的优秀编辑器?

是什么使Emacs成为Lisp程序员的优秀编辑器?,emacs,lisp,Emacs,Lisp,每当我查看Lisp的编辑器时,不可避免地会首先出现Emacs。从一个对Emacs不太了解的人的角度来看,相对于Vim、Eclipse等东西,Emacs有什么好处?Emacs对Lisp很有用,因为Emacs是用Lisp编写的(大部分是用Lisp编写的)。设计和实现Emacs的人需要一个非常适合编写Lisp代码的编辑器。有一些东西“使Emacs成为Lisp程序员[/hacker]的良好环境”: emacs的“高级”部分都是用elisp编写的;模块/模式可编辑为套件,整个elisp环境处于“活动”状态

每当我查看Lisp的编辑器时,不可避免地会首先出现Emacs。从一个对Emacs不太了解的人的角度来看,相对于Vim、Eclipse等东西,Emacs有什么好处?

Emacs对Lisp很有用,因为Emacs是用Lisp编写的(大部分是用Lisp编写的)。设计和实现Emacs的人需要一个非常适合编写Lisp代码的编辑器。

有一些东西“使Emacs成为Lisp程序员[/hacker]的良好环境”:

  • emacs的“高级”部分都是用elisp编写的;模块/模式可编辑为套件,整个elisp环境处于“活动”状态。交互可能非常复杂,但是,如果你是lisp黑客。。。而且可以忍受elisp

  • 编辑lisp缓冲区(aka文件)的良好模式。这是有意义的:创建一个更好的模式,使Emacs更好地工作,创建一个更好的模式来

  • 使用来自其他LISP实现的REPL的各种[“低级”]模式:Scheme、Common LISP、Clojure等(低级模式不以“LISP方言”结尾)

  • 当然,Emacs是一个通用的文本编辑器——它恰好包括一个厨房水槽和一个烤面包机——甚至适合那些不喜欢括号的人(尽管创建一个真正漂亮的“.Emacs”配置可能会有问题……如果确实是这样的话)

    现在,对于Java项目,我更喜欢EclipseIDE——现在,如果他们能够包含一个好的编辑器就好了:-/-,但这正是beast的本质

    试试看:你做得很像。如果没有,请继续

    仔细阅读(并实际尝试互动教程)可能会带来更愉快的冒险

    快乐的编码。

    是什么让Emacs如此伟大(特别是对于Lisp开发)

    完全的延展性,从内部开始

    用Lisp编写,特别适合于编辑、转换和其他Lisp。这在(本质上)任何其他编辑器中都是可行的,但与Emacs的程度不同

    编写Eclipse插件所需的工作量远远超过了扩展Emacs、模块化e-lisp学习曲线所需的工作量(这不是我最喜欢的lisp)。我想说的是,在Emacs中实现“大”功能有一个“转折点”,在这个转折点上同样会变得麻烦,但这可能是个人偏见


    我不知道扩展Vi[m]有多容易/难。

    slime Emacs模式与“劣等”lisp交互以获得更好的lisp体验:Emacs将要求lisp:

    • 标识符的完成
    • 文件
    • 测试新代码
    • 调试
    • 检查对象

    事实上,Emacs是由lisp hacker编写的,这使得专门为lisp编写的部分特别出色。

    Emacs作为lispers为呃lisping编写的编辑器的传统体现在s表达式是一个基本的可编辑单元——在其他编辑器中,您可以按行或字移动、选择和剪切,但在Emacs中,您也可以通过s表达式来完成这些操作;有一些内置命令,如
    forward sexp

    因此,在编辑lisp源代码时,这基本上是有用的,但除此之外,还有一个,它提供了以优雅的方式操纵sexps树的命令,这将使重构其他语言的IDE感到尴尬。我很难想象一个认真的lisp程序员在熟悉paredit后不会有更高的工作效率

    最近,类似的功能也被添加到其他编辑器中,但更多的是事后考虑。Emacs的作者一直在Emacs内部编写Emacs的lisp部分,因此lisp特定的功能具有一定程度的成熟度和集成度,我们许多Emacs用户认为这使我们在生产力方面具有优势。


    努夫说。

    Emacs是一种文本编辑器。广泛使用的是GNU Emacs编辑器及其变体。GNU Emacs本身几乎完全可以使用Emacs Lisp(Lisp的一种方言)进行自定义

    由于GNU Emacs可以在Emacs Lisp中编程,因此Lisp程序员定制编辑器比使用其他扩展语言的编辑器更容易

    GNU Emacs有简单的方法来控制外部工具,如Lisp系统。例如,shell模式使运行Lisp并在缓冲区中与之交互成为可能

    Lisp开发人员已经投入了大量的时间来开发GNU Emacs的更复杂的扩展,以控制外部Lisp并与之交互

    近年来,SLIME在Lisp社区得到了广泛的使用。它最初是为用CommonLisp进行编码而开发的。SLIME提供了很多工具,主要是基于文本的工具,它们构成了一个Lisp开发环境:编辑支持、交互式工作的侦听器、回溯、检查器等等。SLIME支持几种常见的Lisp实现,并提供运行中的常见Lisp系统和编辑器之间的通信。在SLIME中,编辑器与运行的公共Lisp的这种集成非常广泛


    还有其他类似Emacs的编辑器具有类似的功能:CMUCL和CCL的Hemlock、LispWorks编辑器、Allegro CL的编辑器和其他一些。它们通常提供更基于GUI的方法,并且并非所有工具都实现为编辑器缓冲区。所有这些都可以与GNU Emacs和SLIME一起使用。

    这个问题应该是无需思考的。答案很简单:Emacs是(Emacs)Lisp。Emacs是一个Lisp环境,而且这种环境已经存在很长很长时间了。例如,Lisp机器(全部)在很大程度上基于Emacs的Lisp环境

    仅说(GNU)Emacs是用Lisp实现的,这是正确的,但并不完整。Emacs是(99.999%)Emacs Lisp。把Emacs想象成Lisp,它变得更具交互性,并扩展到操作缓冲区之类的东西。

    有点br