使用Vim进行Lisp开发


87

我已经使用Lisp了一段时间,但是我开始对在Lisp中进行一些“实际”工作变得更加认真。我是Vim的忠实拥护者,想知道如何将Vim用作Lisp开发的编辑器来提高生产力。欢迎插件,工作流程建议等。

请不要说“使用emacs”,因为我已经对Vim有所了解,作为编辑我真的很喜欢它。


哪个Lisp,常见Lisp?
pupeno

在这种情况下,是的,Common Lisp。我也在Scheme中做一些玩弄,但这更多是用于临时探索性编程。
德鲁·奥尔森

Answers:


51

Limp旨在成为Vim的全功能Common Lisp IDE。它默认为SBCL,但可以更改为支持大多数其他实现,方法是在文件/usr/local/limp/latest/bin/lisp.sh中用“ sbcl”替换您喜欢的lisp。

这些天讨论Lisp时,通常假定它是Common Lisp,它是ANSI X3J13标准化的语言(有关一本好教科书,请参见HyperSpecPractical Common Lisp),其实现方式包括GNU Clisp,SBCL,CMUCL,AllegroCL等。其他。

回到Li行。还有其他一些更轻巧的解决方案,或者尝试做其他事情,但是我相信要提供一种环境,为您提供诸如括号匹配,突出显示,文档查找之类的东西,即尽可能使其成为交钥匙解决方案。

Limp存储库中,您会找到SlimVim项目的一些先前工作,即ECL(可嵌入式Common Lisp)接口,与更高版本(7.1)合并;西蒙还提供了尚未合并的7.2补丁。ECL接口记录在if_ecl.txt中

短期工作是与7.2合并,并向vim_dev提交补丁以使其合并到正式的Vim树中。

这导致了我们的长期计划:直接在Vim中使用Lisp将使在SWANK前端(在Lisp中运行的SLIME部分,而slime.el是在Lisp中运行的部分)上的工作变得方便。编辑器-前端)。

在两者之间的某个地方,很可能所有的Limp都将使用ECL界面以Common Lisp进行重写,从而使Limp易于维护(VimScript不是我的最爱),并且易于用户定制。

官方网站的跛行从时间下降到时间,但指出,该下载在Vim.org应该总是工作,和支持团体跛行devel的跛行用户与谷歌网上论坛托管。如果您觉得自己需要一个已回答的问题,或者甚至想参与开发,请不要犹豫。大部分讨论都在mp行清单上进行。如果您正在使用IRC,那么我在irc.freenode.net上的#limp中是“ tic”。

祝好运!


3
这项工作的状态如何?您是否仍对使用它感兴趣?
艾里克·加里森

4
我糊涂了。“答案”似乎是对一些选项的建议,例如使用Limp,但根本没有解释如何实现此目的。我以为问题是,如何在SBCL中使用Vim?这并不能真正回答问题,所以我对所有支持者感到困惑。您介意详细介绍如何实际设置此环境并开始使用吗?
jpswain 2011年

看来Limp不再受到维护:站点已关闭,最后一次更改是2008
。– kynan 2014年

正如其他人所指出的那样,上面的大多数链接(以及vim.org的limp页面上的链接)早已损坏。但是,您可以在github.com/mikaelj/limp
George Hawkins

28

您可能要让SLIVV休息一下。


+1只是从slimv开始,所以几乎对此一无所知,但它似乎是开箱即用的完美工具,可以作为emacs的史莱姆的真正替代品。它还具有最新版本(v0.9.2 2011年11月7日),而limp自2008
。– jmsu 2011年

2
使用slimv已有一段时间;太好了 在这个空间上没有其他可比的。
tempire 2012年

18

这是Xach的很酷的图表,总结了当前的情况。

该图说明几乎没有VIM用户也是Lisp程序员,也可以对其进行破解以使其成为一个很好的Lisp IDE ...糟糕的替代文字:)


61
真傻 您不需要C来定制Vim。Vim可以使用其自己的语言开箱即用地编写脚本,并且大多数构建也支持Ruby和Python脚本。
山姆·斯托克斯

6
因此,要对Common Lisp使用VIM的VIM用户是所有VIM用户的核心?也许我在这里想念什么……
哈顿

@路易斯:实际上,蓝点位于中间这一事实使绿点无法与其不相交。我要说的是,该图的作者缺少几何图形的工作原理。
直觉

9
绿色和蓝色应该相交。
路易斯·奥利维拉(LuísOliveira)2010年


7

SLIME for EMACS是用于LISP编程的绝佳工具。最好的部分是将编辑器中编写的代码直接发送到实时LISP会话。您可以使用以下提示从Vim中获得类似的行为:

http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/

我调整了自己的脚本,以便可以发送到SBCLClojure会话。它使您的工作效率更高,并利用REPL。

“:set lisp”启动Vim的lisp缩进模式。但这不适用于Clojure等方言。对于Clojure,请使用VimClojure

有些人也喜欢LIMP


7

距今已有9年了,现在有了Vim 8和Neovim,它们都提供了与插件异步交互的功能。

vlime是一个出色的,功能丰富的插件,它利用新的异步接口为Common Lisp提供类似于SLIME的开发环境。


6
  • Vim附加组件:Rainbow括号,Lisp语法
  • SBCL附加组件:rlwrap,sb-aclrepl
  • 工作流程:具有多个终端窗口的Ion3(或其他平铺的WM)。

    • 在Vim中编辑Lisp
    • 切换到Lisp窗口(当然使用键盘)
    • 使用Cr调用该行以重新加载有问题的ASDF系统,从而使更改生效。
    • 使用X Window复制/粘贴进行小的片段/更改。
    • 大量使用DESCRIBE,TRACE和APROPOS。
    • 重复。

5

:set Lisp

Vim提供了一种模式来帮助您按照Lisp标准缩进代码。

另外,我修改了lispwords以更改vim缩进代码的方式。

:setl lw- = if(在〜/ .vim / ftplugin / lisp.vim中)


1
缩进很容易。提供良好的IDE更为重要。实际上,VIM甚至不会像Emacs / SLIME那样做(缩进)。
路易斯·奥利维拉

3

您可以尝试使用Vim仿真的Emacs,虽然不是很完美,但是可能有些熟悉。我认为如果您使用Slime或DrScheme之类的工具进行迭代开发,Lisp会大放异彩,其他所有编辑器都觉得这是错误的。


2

我知道您说过不要告诉您使用Emacs。

使用Emacs。

认真地说,Emacs的SLIME设置几乎是Lisp标准开发平台,这是有充分理由的。


5
即使到2011年4月人们仍然不赞成它,我仍然坚持这个答案。我喜欢Vim并每天使用它,但是没有什么比在Lisp编写的环境中编写Lisp更好的了。“我希望我可以让编辑器对Lisp服务器中发生的事情做出反应。哦,等等!我可以!” 感觉很棒 再说一遍:我喜欢Vim,但我认为Emacs是与之合作的更好的编辑器。Lisp的
Kirk Strauser 2011年

跟进:6年后,你们是否仍在对这个已有近十年历史的答案进行投票?OK,我们明白了,我们明白了!😀我仍然没有改变它。
Kirk Strauser

2

似乎已经尝试在Vim中进行类似Lissp的SLIME集成,但实际上还没有达到真正有用的程度。我认为ECL的集成已经完成,但尚未提交到上游。

您应该在Cliki的Vim页面上找到所有相关链接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.