Verwenden von Vim für die Lisp-Entwicklung

87

Ich benutze Lisp schon eine Weile ein- und ausgeschaltet, aber ich fange an, mich ernsthaft mit "echten" Arbeiten in Lisp zu beschäftigen. Ich bin ein großer Vim-Fan und habe mich gefragt, wie ich mit Vim als Editor für die Lisp-Entwicklung am produktivsten sein kann. Plugins, Workflow-Vorschläge usw. sind willkommen.

Bitte sagen Sie nicht "benutze Emacs", da ich bereits auf Vim hochgefahren bin und es als Editor wirklich genieße.

Drew Olson
quelle
Welches Lisp, Common Lisp?
Pupeno
In diesem Fall ja, Common Lisp. Ich spiele auch ein bisschen in Scheme herum, aber das ist mehr für gelegentliches exploratives Programmieren.
Drew Olson

Antworten:

51

Limp soll eine voll funktionsfähige Common Lisp IDE für Vim sein. Der Standardwert ist SBCL, kann jedoch geändert werden, um die meisten anderen Implementierungen zu unterstützen, indem "sbcl" für Ihr Lieblings-Lisp in der Datei /usr/local/limp/latest/bin/lisp.sh ersetzt wird

Wenn heutzutage über Lisp gesprochen wird, wird allgemein angenommen, dass es sich um Common Lisp handelt, die von ANSI X3J13 standardisierte Sprache (siehe HyperSpec und Practical Common Lisp für ein gutes Lehrbuch) mit Implementierungen wie GNU Clisp, SBCL, CMUCL, AllegroCL und vielen anderen Andere.

Zurück zum Hinken. Es gibt andere Lösungen, die leichter sind oder versuchen, andere Dinge zu tun, aber ich glaube daran, eine Umgebung bereitzustellen, die Ihnen Dinge wie Klammerabgleich, Hervorhebung, Dokumentationssuche bietet, dh sie so weit wie möglich zu einer schlüsselfertigen Lösung macht .

Im Limp-Repository finden Sie einige der früheren Arbeiten des SlimVim-Projekts, nämlich die ECL-Schnittstelle (Embeddable Common Lisp), die mit späteren Versionen (7.1) zusammengeführt wurde. Simon hat auch Patches für 7.2 verfügbar gemacht, die noch zusammengeführt werden müssen. Die ECL-Schnittstelle ist in if_ecl.txt dokumentiert .

Kurzfristige Arbeit besteht darin, die Zusammenführung mit 7.2 durchzuführen und einen Patch an vim_dev zu senden, um ihn in den offiziellen Vim-Baum einzufügen.

Was uns zu den langfristigen Plänen führt: Wenn Sie Lisp direkt in Vim haben, können Sie bequem mit der Arbeit an einem SWANK-Frontend beginnen (dem Teil von SLIME, der in Ihrem Lisp ausgeführt wird, wobei slime.el der Teil ist, der im Lisp ausgeführt wird Editor - das Frontend).

Und irgendwo dazwischen ist es wahrscheinlich, dass Limp über die ECL-Oberfläche in Common Lisp neu geschrieben wird, wodurch Limp einfacher zu warten ist (VimScript ist nicht mein Favorit) und für Benutzer einfacher anzupassen ist.

Die offizielle Limp-Site fällt von Zeit zu Zeit aus, aber wie bereits erwähnt, sollte der Download auf Vim.org immer funktionieren, und die Support-Gruppen limp-devel und limp-user werden bei Google Groups gehostet. Zögern Sie nicht, mitzumachen, wenn Sie der Meinung sind, dass eine Frage beantwortet werden muss oder Sie vielleicht sogar an der Entwicklung teilnehmen möchten. Der größte Teil der Diskussion findet auf der Limp-Devel-Liste statt. Wenn Sie sich für IRC interessieren, bin ich in #limp auf irc.freenode.net als 'tic'.

Viel Glück!

Mikael Jansson
quelle
3
Wie ist der Stand dieser Arbeit? Sind Sie immer noch daran interessiert, damit zu arbeiten?
Erik Garrison
4
Ich bin verwirrt. Die "Antwort" scheint ein Vorschlag für einige Optionen zu sein, beispielsweise die Verwendung von Limp, erklärt jedoch überhaupt nicht, wie dies erreicht werden kann. Ich dachte die Frage wäre, wie ich Vim mit SBCL / was auch immer benutze. Dies beantwortet die Frage nicht wirklich, daher bin ich ein bisschen verwirrt von all den positiven Stimmen. Würde es Ihnen etwas ausmachen, ein wenig detailliert darauf einzugehen, wie Sie diese Umgebung tatsächlich einrichten und loslegen?
jpswain
Es scheint, dass Limp nicht mehr gewartet wird: Die Seite ist
ausgefallen
Wie von anderen bemerkt, sind die meisten der obigen Links (und auf der schlaffen Seite auf vim.org) lange kaputt. Sie können jedoch fast alles (die .vim-Dateien und die zugehörige Dokumentation) unter github.com/mikaelj/limp
George Hawkins
28

Sie könnten slimv eine Pause geben.

osdf
quelle
+1 Ich fange gerade mit slimv an, also fast kein Wissen darüber, aber es scheint sofort als echte Alternative zu Schleim für Emacs zu funktionieren. Es hat auch aktuelle Veröffentlichungen (v0.9.2 07-nov-2011), während limp seit 2008 keine Updates mehr hat.
jmsu
2
Ich benutze Slimv schon eine Weile. es ist exzellent. Nichts anderes ist vergleichbar mit dem Raum.
Tempire
18

Hier ist ein cooles Diagramm von Xach , das die aktuelle Situation zusammenfasst.

Diagramm, das erklärt, dass es fast keine VIM-Benutzer gibt, die auch Lisp-Programmierer sind und es auch hacken können, um daraus eine gute Lisp-IDE zu machen ... mieser Alternativtext :)

Luís Oliveira
quelle
60
Das ist dumm. Sie benötigen C nicht, um Vim anzupassen. Vim ist sofort in seiner eigenen Sprache skriptfähig, und die meisten Builds unterstützen auch Ruby- und Python-Skripte.
Sam Stokes
6
Die VIM-Benutzer, die VIM für Common Lisp verwenden möchten, sind der Kern aller VIM-Benutzer. Vielleicht fehlt mir hier etwas ...
Will Hartung
@Luis: Tatsächlich macht es die Tatsache, dass sich der blaue Punkt in der Mitte befindet, unmöglich, dass sich der grüne Punkt nicht mit ihm schneidet. Ich würde sagen, dass dem Autor des Diagramms fehlt, wie Geometrie funktioniert.
Intuitiert
9
Grün und Blau sollen sich schneiden.
Luís Oliveira
7

SLIME for EMACS ist ein wunderbares Tool für die LISP-Programmierung. Der beste Teil ist das Senden von in Ihrem Editor geschriebenem Code direkt an eine Live-LISP-Sitzung. Mit den folgenden Tipps können Sie ein ähnliches Verhalten von Vim erzielen:

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

Ich habe mein eigenes Skript so angepasst, dass ich es entweder an eine SBCL- oder eine Clojure- Sitzung senden kann . Es macht Sie viel produktiver und nutzt die REPL.

": set lisp" startet den Lisp-Einrückungsmodus für Vim. Bei einigen Dialekten wie Clojure funktioniert dies jedoch nicht. Verwenden Sie für Clojure VimClojure .

Einige Leute mögen auch LIMP .

Brian
quelle
6
  • Vim-Add-Ons: Rainbow Parentheses, Lisp-Syntax
  • SBCL-Add-Ons: rlwrap, sb-aclrepl
  • Workflow: Ion3 (oder ein anderes gekacheltes WM) mit mehreren Terminalfenstern.

    • Bearbeiten Sie Lisp in Vim
    • Wechseln Sie zum Lisp-Fenster (natürlich über die Tastatur)
    • Verwenden Sie Cr, um die Zeile zum erneuten Laden des betreffenden ASDF-Systems abzurufen, damit Ihre Änderungen aktiv werden.
    • Verwenden Sie X Window Copy / Paste für kleine Schnipsel / Änderungen.
    • Verwenden Sie DESCRIBE, TRACE und APROPOS stark.
    • Wiederholen.
Leslie P. Polzer
quelle
6

Hier sind wir 9 Jahre später und jetzt haben wir Vim 8 und Neovim, die beide die Möglichkeit bieten, asynchron mit Plugins zu interagieren.

vlime ist ein exzellentes Plugin mit vielen Funktionen, das die neue asynchrone Oberfläche nutzt, um eine SLIME-ähnliche Entwicklungsumgebung für Common Lisp bereitzustellen.

Dave Yarwood
quelle
5

: lisp setzen

Vim verfügt über einen Modus, mit dem Sie Ihren Code nach Lisp-Standards einrücken können.

Außerdem ändere ich die Lispwords, um zu ändern, wie vim meinen Code einrückt.

: setl lw- = if (in ~ / .vim / ftplugin / lisp.vim)

greywh
quelle
1
Einrücken ist einfach. Die Bereitstellung einer guten IDE ist viel wichtiger. Tatsächlich macht VIM das nicht einmal (Einrückung) so gut wie Emacs / SLIME.
Luís Oliveira
3

Sie können Emacs mit Vim-Emulation ausprobieren, ist nicht perfekt, aber es kann etwas vertraut sein. Ich denke, Lisp glänzt, wenn Sie etwas wie Slime oder DrScheme für die iterative Entwicklung verwenden, fühlen sich alle anderen Editoren einfach falsch.

pupeno
quelle
2

Ich weiß, dass Sie gesagt haben, Sie sollen Emacs nicht verwenden.

Verwenden Sie Emacs.

Im Ernst, das SLIME- Setup für Emacs ist so ziemlich die Standard-Entwicklungsplattform für Lisp, und das aus gutem Grund.

Kirk Strauser
quelle
5
Ich stehe immer noch zu dieser Antwort, obwohl die Leute sie ab April 2011 immer noch ablehnen. Ich mag Vim und benutze sie täglich, aber es gibt nichts Schöneres, als Lisp in einer in Lisp geschriebenen Umgebung zu programmieren. "Ich wünschte, ich könnte meinen Editor dazu bringen, auf das zu reagieren, was auf meinem Lisp-Server passiert. Oh, warte! Ich kann!" ist ein tolles Gefühl. Nochmals: Ich mag Vim, aber meiner Meinung nach ist Emacs ein viel besserer Editor für die Arbeit mit Lisp .
Kirk Strauser
Follow-up: 6 Jahre später und Sie stimmen immer noch über diese fast zehn Jahre alte Antwort ab? OK, wir verstehen es, wir verstehen es! 😀 Ich ändere es immer noch nicht.
Kirk Strauser
2

Es scheint Versuche gegeben zu haben, eine SLIME-ähnliche Integration von Lisp in Vim zu erreichen, aber keine ist wirklich so weit gegangen, wie es wirklich nötig war. Ich denke, die Integration von ECL wurde zwar durchgeführt, aber nicht vorgelagert.

Sie sollten alle relevanten Links von Clikis Seite über Vim finden .

Nirgendwo, Mann
quelle