我已经有一段时间断断续续地使用Lisp了,但现在开始更加认真地在Lisp上做一些"真正的"工作。我是一个巨大的Vim爱好者,想知道如何在使用Vim作为编辑器时最有效率地进行Lisp开发。欢迎提供插件、工作流建议等。
请不要建议我使用emacs,因为我已经熟悉了Vim,并且非常喜欢它作为编辑器。
我已经有一段时间断断续续地使用Lisp了,但现在开始更加认真地在Lisp上做一些"真正的"工作。我是一个巨大的Vim爱好者,想知道如何在使用Vim作为编辑器时最有效率地进行Lisp开发。欢迎提供插件、工作流建议等。
请不要建议我使用emacs,因为我已经熟悉了Vim,并且非常喜欢它作为编辑器。
Limp旨在成为Vim的全功能Common Lisp IDE。它默认使用SBCL,但可以通过替换"/usr/local/limp/latest/bin/lisp.sh"文件中的"sbcl"来支持大多数其他实现。
当今讨论Lisp时,通常指的是Common Lisp,这是由ANSI X3J13标准化的语言(请参见HyperSpec和Practical Common Lisp以获取良好的教材),具有GNU Clisp、SBCL、CMUCL、AllegroCL等实现。
回到Limp。还有其他一些更轻量级或尝试做其他事情的解决方案,但我相信提供一个环境,使您获得像括号匹配、高亮、文档查找等功能,使其尽可能成为一个即插即用的解决方案。
在Limp存储库中,您将找到SlimVim项目的一些先前工作,即ECL(Embeddable Common Lisp)接口,与后续发布(7.1)合并;Simon还提供了7.2的补丁,尚未合并。 ECL接口在if_ecl.txt中有记录。
短期内的工作是将其与7.2合并,并提交一个补丁到vim_dev,以使其合并到官方的Vim树中。
这引领我们进入了长期计划:在Vim中直接使用Lisp将方便开始开发SWANK前端(SLIME的运行在Lisp中的部分,slime.el是运行在编辑器中的部分-前端)。
在此之间的某个位置,很可能会将整个Limp重写为使用ECL接口的Common Lisp,从而使Limp更易于维护(VimScript不是我的最爱),并且更容易为用户定制。
官方Limp网站 有时会掉线,但是可以通过 Vim.org下载 ,并且支持组limp-devel 和 limp-user 托管在Google Groups上。如果您需要解答问题,甚至想参与开发,不要犹豫加入。大部分讨论都在limp-devel列表中进行。如果您使用IRC,请加入 irc.freenode.net 上的 #limp,我的昵称是'tic'。祝您好运!这是一张很酷的图表,由Xach制作,概括了当前的情况。
现在我们已经迎来了9年,现在我们有了Vim 8和Neovim,两者都提供了异步交互插件的能力。
vlime是一个非常出色且功能丰富的插件,它利用新的异步接口为Common Lisp提供类似SLIME的开发环境。
:set lisp
Vim有一个模式可以帮助您按照Lisp标准对代码进行缩进。
此外,我修改了lispwords以改变vim如何缩进我的代码。
:setl lw-=if(在~/.vim/ftplugin/lisp.vim中)
EMACS的SLIME是LISP编程的一个很好的工具。 最好的部分是将编辑器中编写的代码直接发送到实时的LISP会话中。 您可以使用此处的技巧在Vim中获得类似的行为:
http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/
我调整了自己的脚本,以便可以将其发送到SBCL或Clojure会话。 它使您更加高效,并利用了REPL。
“:set lisp”启动Vim的lisp缩进模式。 但是,它无法与一些方言(如Clojure)一起使用。 对于Clojure,请使用VimClojure。
有些人也喜欢LIMP。
工作流程:使用Ion3(或其他平铺式窗口管理器)并打开多个终端窗口。