题
我断断续续地使用 Lisp 一段时间了,但我开始更加认真地用 Lisp 做一些“真正的”工作。我是 Vim 的超级粉丝,并且想知道如何使用 Vim 作为 Lisp 开发的编辑器来最高效地工作。插件、工作流程建议等。欢迎大家。
请不要说“使用 emacs”,因为我已经熟悉了 Vim 并且作为一名编辑器我真的很喜欢它。
解决方案
Limp 的目标是成为 Vim 的功能齐全的 Common Lisp IDE。它默认为 SBCL,但可以通过将文件 /usr/local/limp/latest/bin/lisp.sh 中的“sbcl”替换为您最喜欢的 lisp 来更改以支持大多数其他实现
现在讨论 Lisp 时,通常会假设是 Common Lisp,这是 ANSI X3J13 标准化的语言(请参阅 超规格, , 和 实用 Common Lisp 一本好的教科书),具有 GNU CLIsp、SBCL、CMUCL、AllegroCL 等实现。
回到林普。还有其他更轻量级的解决方案,或者尝试做其他事情,但我相信提供一个环境,为您提供括号匹配、突出显示、文档查找等功能,即尽可能使其成为交钥匙解决方案。
在 跛行存储库 你会发现 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 下载 应该始终有效,并且支持小组 跛行发展 和 跛行用户 由 Google 网上论坛托管。如果您觉得自己需要解答问题,或者甚至想参与开发,请毫不犹豫地加入。大多数讨论都发生在 limp-devel 列表上。如果您喜欢 IRC,我会在 irc.freenode.net 上以“tic”的身份出现在 #limp 中。
祝你好运!
其他提示
你可能会给 苗条 休息。
这是一个很酷的图表 哈克 这总结了目前的情况。
SLIME for EMACS 是一个很棒的 LISP 编程工具。最好的部分是将编辑器中编写的代码直接发送到实时 LISP 会话。您可以使用此处的提示从 Vim 中获得类似的行为:
http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/
我调整了自己的脚本,以便我可以发送到 SBCL 或者 克洛尤尔 会议。它可以提高您的工作效率并利用 REPL。
":set lisp" 启动 Vim 的 lisp 缩进模式。但它不适用于 Clojure 等某些方言。对于 Clojure,使用 VimClojure.
有些人喜欢 跛行 还。
:设置口齿不清
Vim 有一种模式可以帮助您按照 Lisp 标准缩进代码。
另外,我修改了 lispwords 以更改 vim 缩进代码的方式。
:setl lw-=if (在 ~/.vim/ftplugin/lisp.vim 中)
- Vim 附加组件:彩虹括号,Lisp 语法
- SBCL 附加组件:rlwrap、sb-aclrepl
工作流程:Ion3(或其他一些平铺的 WM)具有多个终端窗口。
- 在 Vim 中编辑 Lisp
- 切换到 Lisp 窗口(当然使用键盘)
- 使用 C-r 调用重新加载相关 ASDF 系统的行,以便您的更改生效。
- 使用 X Window 复制/粘贴进行小片段/更改。
- 大量使用 DESCRIBE、TRACE 和 APROPOS。
- 重复。
你可以给Emacs用Vim模拟一下,虽然不是很完美,但是可能有点熟悉。我认为如果你使用 Slime 或 DrScheme 之类的东西进行迭代开发,Lisp 就会大放异彩,所有其他编辑器都会觉得错了。
9 年后的今天,我们有了 Vim 8 和 Neovim,它们都提供了与插件异步交互的能力。
弗莱姆 是一个优秀的、功能丰富的插件,它利用新的异步接口为 Common Lisp 提供类似 SLIME 的开发环境。
似乎有人尝试过在 Vim 中进行类似 SLIME 的 Lisp 集成,但都没有真正达到真正有用的程度。我认为 ECL 的集成已经完成,但尚未向上游承诺。
您应该找到所有相关链接 关于 Vim 的 Cliki 页面.