使用Vim进行Lisp开发
我已经使用Lisp了一段时间,但是我开始对在Lisp中进行一些"实际"工作变得更加认真。我是Vim的忠实拥护者,想知道如何使用Vim作为Lisp开发的编辑器来提高工作效率。欢迎插件,工作流程建议等。
请不要说"使用emacs",因为我已经对Vim有所了解,作为编辑我真的很喜欢它。
解决方案
查看Limp插件:
http://www.vim.org/scripts/script.php?script_id=2219
我们可以尝试使用Vim仿真的Emacs,虽然不是很完美,但是可能有些熟悉。我认为如果我们使用Slime或者DrScheme之类的工具进行迭代开发,Lisp会大放异彩,其他所有编辑器都觉得这是错误的。
:set Lisp
Vim提供了一种模式来按照Lisp标准缩进代码。
另外,我修改了lispwords以更改vim使代码缩进的方式。
:setl lw- = if(在〜/ .vim / ftplugin / lisp.vim中)
我知道我们说过不要告诉我们使用Emacs。
使用Emacs。
认真地说,Emacs的SLIME设置几乎是Lisp的标准开发平台,这是有充分的理由的。
SLIME for EMACS是用于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。
这是Xach的很酷的图表,总结了当前的情况。
似乎已经尝试在Vim中进行类似Lissp的SLIME集成,但实际上并没有达到真正有用的程度。我认为ECL的集成已经完成,但尚未提交到上游。
我们应该在Cliki的Vim页面上找到所有相关链接。
Limp的目标是成为Vim的功能齐全的Common Lisp IDE。它默认为SBCL,但可以更改为支持大多数其他实现,方法是在文件/usr/local/limp/latest/bin/lisp.sh中用" sbcl"替换我们喜欢的lisp。
这些天讨论Lisp时,通常假定它是Common Lisp,它是ANSI X3J13标准化的语言(请参阅HyperSpec和实用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不是我的最爱),并且易于用户定制。
Limp官方网站有时会关闭,但请注意,在Vim.org上的下载应始终有效,并且limp-devel和limp-user支持组由Google网上论坛托管。如果我们觉得自己需要回答一个问题,或者甚至想参与开发,请不要犹豫。大部分讨论都在mp行清单上进行。如果我们正在使用IRC,那么我在irc.freenode.net上的#limp中是" tic"。
祝你好运!
- Vim添加组件:Rainbow括号,Lisp语法
- SBCL添加组件:rlwrap,sb-aclrepl
- 切换到Lisp窗口(当然使用键盘)
- 使用C-r调用该行以重新加载有问题的ASDF系统,从而使更改生效。
- 使用X Window复制/粘贴进行小的片段/更改。
- 大量使用DESCRIBE,TRACE和APROPOS。
- 重复。
我们可能会让SLIVV休息一下。