使用Vim进行Lisp开发

我一直在使用Lisp一段时间,但是我开始更加认真地对Lisp做一些“真正的”工作。 我是一个庞大的Vim粉丝,想知道如何使用Vim作为我的Lisp开发编辑来提高效率。 插件,工作stream程build议等都是受欢迎的。

请不要说“使用emacs”,因为我已经加强了Vim,我真的很享受它的编辑。

Limp的目标是为Vim提供全function的Common Lisp IDE。 它默认为SBCL,但是可以通过在/usr/local/limp/latest/bin/lisp.sh文件中将“sbcl”replace为您最喜欢的lisp来更改为支持大多数其他实现

在讨论Lisp的时候,通常被假设为Common Lisp,ANSI X3J13标准的语言(参见HyperSpec和Practical Common Lisp一本很好的教科书),其中包含GNU Clisp,SBCL,CMUCL,AllegroCL等实现其他。

回到跛行。 还有其他解决scheme更轻量化,或者尝试做其他事情,但我相信提供了一个环境,可以为您提供诸如括号匹配,突出显示,文档查找等操作,即尽可能使其成为交钥匙解决scheme。

在Limp仓库中,您会发现SlimVim项目的一些以前的工作,即ECL(Embeddable Common Lisp)界面,与更高版本(7.1)合并; 西蒙还将补丁提供给7.2版本,但尚未合并。 ECL接口logging在if_ecl.txt中 。

短期工作就是和7.2合并,然后向vim_dev提交一个补丁,将它合并到官方的Vim树中。

这使我们有了长远的计划:在Vim中直接使用Lisp可以方便地开始在SWANK前端(在你的Lisp中运行的SLIME部分,而slime.el是运行在编辑器 – 前端)。

而在这之间的某个地方,很可能所有的Limp都会被ECL界面改写成Common Lisp,这使得Limp更容易维护(VimScript不是我最喜欢的),并且更容易让用户自定义。

Limp官方网站不时出现,但正如所指出的那样, Vim.org的下载应始终有效,而支持团体limp-devel和limp-user 则由 Google Groups托pipe。 如果您觉得您需要回答问题,或者甚至想参与开发,请不要犹豫join。 大部分的讨论发生在跛脚的名单上。 如果你进入IRC,我会在irc.freenode.net的#limp中作为'tic'。

祝你好运!

你可以稍微rest一下。

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

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

用于EMACS的SLIME是LISP编程的一个很好的工具。 最好的部分是将编辑器中编写的代码直接发送到活动的LISP会话。 你可以使用这里的提示获得类似的行为:

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

我调整了自己的脚本,以便发送给SBCL或Clojure会话。 它使你更有效率,并利用REPL。

“:set lisp”启动Vim的lisp缩进模式。 但是它不适用于像Clojure这样的一些方言。 对于Clojure,使用VimClojure 。

有些人也喜欢LIMP 。

:设置lisp

Vim有一个模式可以帮助你通过Lisp标准缩进你的代码。

另外,我修改了lispwords来改变vim如何缩进我的代码。

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

  • Vim附加组件:彩虹括号,Lisp语法
  • SBCL附件:rlwrap,sb-aclrepl
  • 工作stream程:具有多个terminal窗口的Ion3(或其他瓷砖WM)。

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

你可以尝试用Emacs来进行Vim仿真,虽然不完美,但可能有些熟悉。 我觉得如果你使用像Slime或DrScheme这样的迭代开发,Lisp就会闪耀,所有其他的编辑都觉得是错误的。

似乎有人试图在Vim中实现类似于SLIME的Lisp集成,但是没有一个真正需要真正有用的东西。 我认为ECL的整合已经完成,但是并没有在上游承诺。

你应该从Cliki的关于Vim的页面find所有相关的链接。

在这里,我们已经9年过去了,现在我们有了Vim 8和Neovim,两者都提供了asynchronous交互插件的能力。

vlime是一个优秀的,function丰富的插件,它利用新的asynchronous接口为Common Lisp提供类SLIME的开发环境。

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

使用Emacs。

严重的是,Emacs的SLIME设置几乎是Lisp 标准开发平台,而且是非常好的理由。