Utilizzo di Vim per lo sviluppo in Lisp


87

Uso Lisp in modo acceso e spento da un po ', ma sto iniziando a diventare più serio riguardo al lavoro "reale" in Lisp. Sono un grande fan di Vim e mi chiedevo come posso essere più produttivo usando Vim come editor per lo sviluppo Lisp. Plugin, suggerimenti sul flusso di lavoro, ecc. Sono tutti benvenuti.

Per favore, non dire "usa emacs" dato che ho già iniziato a usare Vim e mi sto divertendo molto come editor.


Quale Lisp, Common Lisp?
pupeno

In questo caso, sì, Common Lisp. Gioco anche in Scheme, ma è più per la programmazione esplorativa casuale.
Drew Olson

Risposte:


51

Limp mira ad essere un IDE Common Lisp completo per Vim. Il valore predefinito è SBCL, ma può essere modificato per supportare la maggior parte delle altre implementazioni sostituendo "sbcl" per il tuo lisp preferito, nel file /usr/local/limp/latest/bin/lisp.sh

Quando si discute di Lisp in questi giorni, si presume comunemente che sia Common Lisp, il linguaggio standardizzato da ANSI X3J13 (vedere HyperSpec e Practical Common Lisp per un buon libro di testo) con implementazioni come GNU Clisp, SBCL, CMUCL, AllegroCL e molti altri.

Torna a Limp. Ci sono altre soluzioni che sono più leggere, o provano a fare altre cose, ma credo nel fornire un ambiente che ti dia cose come la corrispondenza delle parentesi, l'evidenziazione, la ricerca della documentazione, cioè rendendola una soluzione chiavi in ​​mano il più possibile .

Nel repository Limp troverai alcuni dei lavori precedenti del progetto SlimVim, ovvero l'interfaccia ECL (Embeddable Common Lisp), fusa con le versioni successive (7.1); Simon ha anche reso disponibili le patch 7.2 che devono ancora essere unite. L'interfaccia ECL è documentata in if_ecl.txt .

Il lavoro a breve termine consiste nel fare tale fusione con 7.2 e inviare una patch a vim_dev per farla incorporare nell'albero ufficiale di Vim.

Il che ci porta ai piani a lungo termine: avere Lisp direttamente in Vim renderà conveniente iniziare a lavorare su un front-end SWANK (la parte di SLIME che gira nel tuo Lisp, con slime.el che è la parte che gira nel editor - il frontend).

E da qualche parte nel mezzo, è probabile che tutto Limp verrà riscritto in Common Lisp utilizzando l'interfaccia ECL, rendendo Limp più facile da mantenere (VimScript non è il mio preferito) e più facile da personalizzare per gli utenti.

Il sito ufficiale di Limp si interrompe di tanto in tanto, ma come sottolineato, il download su Vim.org dovrebbe sempre funzionare ei gruppi di supporto limp-devel e limp-user sono ospitati con Google Gruppi. Non esitare a partecipare se ritieni di aver bisogno di una risposta a una domanda, o forse vuoi anche partecipare allo sviluppo. La maggior parte della discussione si svolge sulla lista dei limp-devel. Se ti piace IRC, sono in #limp su irc.freenode.net come "tic".

In bocca al lupo!


3
Qual è lo stato di questo lavoro? Sei ancora interessato a lavorare con esso?
Erik Garrison

4
Non ho capito bene. La "risposta" sembra un suggerimento di alcune opzioni, come l'utilizzo di Limp, ma non spiega affatto come ottenerlo. Ho pensato che la domanda fosse, come uso Vim con SBCL / qualunque cosa. Questo non risponde davvero alla domanda, quindi sono un po 'confuso da tutti i voti positivi. Ti dispiacerebbe entrare nei dettagli su come impostare effettivamente questo ambiente e iniziare?
jpswain

Sembra che Limp non sia più mantenuto: il sito è inattivo e l'ultima modifica è stata nel 2008.
kynan

Come notato da altri, la maggior parte dei collegamenti sopra (e nella pagina limp su vim.org) sono interrotti da tempo. Tuttavia puoi trovare quasi tutto (i file .vim e la relativa documentazione) su github.com/mikaelj/limp
George Hawkins

28

Potresti dare a Slimv una pausa.


+1 Ho appena iniziato con slimv quindi quasi nessuna conoscenza al riguardo, ma sembra funzionare perfettamente fuori dagli schemi come una vera alternativa allo slime per emacs. Inoltre ha versioni recenti (v0.9.2 07-nov-2011) mentre limp non ha aggiornamenti dal 2008.
jmsu

2
Uso slimv da un po '; è eccellente. Nient'altro è paragonabile nello spazio.
tempire

18

Ecco un bel diagramma di Xach che riassume la situazione attuale.

diagramma che spiega che quasi non ci sono utenti VIM che sono anche programmatori Lisp e possono anche hackerarlo per renderlo un buon IDE Lisp ... pessimo testo alternativo :)


61
È stupido. Non è necessario C per personalizzare Vim. Vim è predisposto per la creazione di script nel suo linguaggio e la maggior parte delle build supporta anche gli script Ruby e Python.
Sam Stokes,

6
Quindi, gli utenti VIM che desiderano utilizzare VIM per Common Lisp sono il nucleo di tutti gli utenti VIM ?? Forse mi manca qualcosa qui ...
Will Hartung il

@Luis: In realtà, il fatto che il punto blu sia al centro rende impossibile che quello verde non si intersechi con esso. Direi che all'autore del diagramma manca come funziona la geometria.
intuito il

9
Il verde e il blu dovrebbero intersecarsi.
Luís Oliveira


7

SLIME per EMACS è uno strumento meraviglioso per la programmazione LISP. La parte migliore è inviare il codice scritto nel tuo editor direttamente a una sessione LISP live. Puoi ottenere un comportamento simile da Vim usando i suggerimenti qui:

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

Ho modificato il mio script in modo da poterlo inviare a una sessione SBCL o Clojure . Ti rende molto più produttivo e sfrutta il REPL.

": set lisp" avvia la modalità di indentazione lisp per Vim. Ma non funzionerà con alcuni dialetti come Clojure. Per Clojure, usa VimClojure .

Ad alcune persone piace anche LIMP .


7

Eccoci qui 9 anni dopo, e ora abbiamo Vim 8 e Neovim, che forniscono entrambi la possibilità di interagire con i plugin in modo asincrono.

vlime è un eccellente plugin ricco di funzionalità che sfrutta la nuova interfaccia asincrona per fornire un ambiente di sviluppo simile a SLIME per Common Lisp.


6
  • Componenti aggiuntivi di Vim: Rainbow Parentheses, Lisp syntax
  • Componenti aggiuntivi SBCL: rlwrap, sb-aclrepl
  • Flusso di lavoro: Ion3 (o qualche altro WM piastrellato) con più finestre di terminale.

    • Modifica Lisp in Vim
    • Passa alla finestra Lisp (usando la tastiera ovviamente)
    • Usa Cr per richiamare la riga per ricaricare il sistema ASDF in questione in modo che le tue modifiche diventino attive.
    • Usa X Window copia / incolla per piccoli snippet / modifiche.
    • Usa DESCRIBE, TRACE e APROPOS pesantemente.
    • Ripetere.

5

: imposta lisp

Vim ha una modalità per aiutarti a indentare il tuo codice secondo gli standard Lisp.

Inoltre, modifico le lispwords per cambiare il modo in cui vim fa rientrare il mio codice.

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


1
il rientro è facile. Fornire un buon IDE è molto più importante. In realtà VIM non lo farà nemmeno (indentazione) così come fa Emacs / SLIME.
Luís Oliveira,

3

Puoi provare Emacs con l'emulazione Vim, non è perfetto, ma potrebbe esserti familiare. Penso che Lisp brilli se usi qualcosa come Slime o DrScheme per lo sviluppo iterativo, tutti gli altri editor si sentono semplicemente sbagliati.


2

So che hai detto di non dirti di usare Emacs.

Usa Emacs.

Seriamente, l' impostazione SLIME per Emacs è praticamente la piattaforma di sviluppo standard per Lisp, e per ottime ragioni.


5
Rimango ancora fedele a questa risposta, anche se le persone la votano ancora per difetto da aprile 2011. Mi piace Vim e lo uso quotidianamente, ma non c'è niente come programmare Lisp in un ambiente scritto in Lisp. "Vorrei poter far reagire il mio editor a ciò che accade nel mio server Lisp. Oh, aspetta! Posso!" è una bella sensazione. Ancora: mi piace Vim, ma la mia opinione è che Emacs sia un editor molto migliore per lavorare con Lisp .
Kirk Strauser

Seguito: 6 anni dopo e state ancora votando su questa risposta vecchia di quasi dieci anni? OK, lo capiamo, lo capiamo! 😀 Non lo sto ancora cambiando.
Kirk Strauser

2

Sembra che ci siano stati tentativi di avere un'integrazione simile a SLIME di Lisp in Vim, ma nessuno si è spinto fino al punto necessario per essere veramente utile. Penso che l'integrazione di ECL sia stata fatta, ma non impegnata a monte.

Dovresti trovare tutti i link rilevanti dalla pagina di Cliki su Vim .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.