Utilisation de Vim pour le développement Lisp


87

J'utilise Lisp sur et en dehors depuis un moment mais je commence à devenir plus sérieux au sujet de faire du "vrai" travail en Lisp. Je suis un grand fan de Vim et je me demandais comment je pouvais être le plus productif en utilisant Vim comme éditeur pour le développement Lisp. Les plugins, les suggestions de flux de travail, etc. sont tous les bienvenus.

S'il vous plaît, ne dites pas "utiliser emacs" car j'ai déjà progressé sur Vim et je l'apprécie vraiment en tant qu'éditeur.


Quel Lisp, Common Lisp?
pupeno

Dans ce cas, oui, Common Lisp. Je joue aussi dans Scheme, mais c'est plus pour la programmation exploratoire occasionnelle.
Drew Olson

Réponses:


51

Limp vise à être un IDE Common Lisp complet pour Vim. Il est par défaut SBCL, mais peut être modifié pour prendre en charge la plupart des autres implémentations en remplaçant «sbcl» par votre lisp préféré, dans le fichier /usr/local/limp/latest/bin/lisp.sh

En discutant de Lisp ces jours-ci, il est généralement supposé être Common Lisp, le langage normalisé par ANSI X3J13 (voir HyperSpec et Practical Common Lisp pour un bon manuel) avec des implémentations telles que GNU Clisp, SBCL, CMUCL, AllegroCL, et bien d'autres autres.

Retour à Limp. Il existe d'autres solutions plus légères, ou qui essaient de faire d'autres choses, mais je crois qu'il faut fournir un environnement qui vous donne des choses comme la correspondance des parenthèses, la mise en évidence, la recherche de documentation, c'est-à-dire en faire une solution clé en main autant que possible .

Dans le référentiel Limp, vous trouverez une partie des travaux précédents du projet SlimVim, à savoir l'interface ECL (Embeddable Common Lisp), fusionnée avec les versions ultérieures (7.1); Simon a également mis à disposition des correctifs pour la version 7.2 qui n'ont pas encore été fusionnés. L'interface ECL est documentée dans if_ecl.txt .

Le travail à court terme consiste à effectuer ladite fusion avec 7.2 et à soumettre un correctif à vim_dev pour le faire fusionner dans l'arborescence officielle de Vim.

Ce qui nous amène aux plans à long terme: avoir Lisp directement dans Vim facilitera le travail sur un front-end SWANK (la partie de SLIME qui s'exécute dans votre Lisp, avec slime.el étant la partie qui s'exécute dans le éditeur - le frontend).

Et quelque part entre les deux, il est probable que tout Limp sera réécrit en Common Lisp en utilisant l'interface ECL, ce qui rendra Limp plus facile à maintenir (VimScript n'est pas mon préféré) et sera plus facile à personnaliser pour les utilisateurs.

Le site officiel de Limp tombe de temps en temps, mais comme indiqué, le téléchargement sur Vim.org devrait toujours fonctionner, et les groupes de soutien limp-devel et limp-user sont hébergés avec Google Groupes. N'hésitez pas à vous joindre si vous sentez que vous avez besoin d'une réponse à une question, ou si vous souhaitez peut-être même participer au développement. La plus grande partie de la discussion se déroule sur la liste de développement limp. Si vous êtes dans IRC, je suis dans #limp sur irc.freenode.net en tant que «tic».

Bonne chance!


3
Quel est le statut de ce travail? Êtes-vous toujours intéressé à travailler avec?
Erik Garrison

4
Je suis confus. La «réponse» semble être une suggestion de quelques options, comme l'utilisation de Limp, mais n'explique pas du tout comment y parvenir. Je pensais que la question était de savoir comment utiliser Vim avec SBCL / peu importe. Cela ne répond pas vraiment à la question, donc je suis un peu confus par tous les votes positifs. Pourriez-vous entrer un peu dans les détails sur la façon de configurer cet environnement et de commencer?
jpswain

Il semble que Limp ne soit plus maintenu: le site est en panne et le dernier changement date de 2008.
kynan

Comme indiqué par d'autres, la plupart des liens ci-dessus (et sur la page souple sur vim.org) sont interrompus depuis longtemps. Cependant, vous pouvez trouver presque tout (les fichiers .vim et la documentation associée) sur github.com/mikaelj/limp
George Hawkins

28

Vous pourriez donner une pause à Slimv .


+1 Je commence juste par slimv donc presque aucune connaissance à ce sujet, mais il semble fonctionner parfaitement bien comme une véritable alternative à slime pour emacs. De plus, il a des versions récentes (v0.9.2 07-nov-2011) tandis que limp n'a pas de mises à jour depuis 2008.
jmsu

2
J'utilise slimv depuis un moment; C'est excellent. Rien d'autre ne se compare dans l'espace.
tempire

18

Voici un diagramme sympa de Xach qui résume la situation actuelle.

diagramme expliquant qu'il n'y a presque pas d'utilisateurs de VIM qui sont également des programmeurs Lisp et peuvent également le pirater pour en faire un bon IDE Lisp ... texte alt moche :)


61
Cela est bête. Vous n'avez pas besoin de C pour personnaliser Vim. Vim est scriptable prêt à l'emploi dans son propre langage, et la plupart des versions prennent également en charge les scripts Ruby et Python.
Sam Stokes

6
Ainsi, les utilisateurs de VIM qui souhaitent utiliser VIM pour Common Lisp sont le noyau de tous les utilisateurs de VIM ?? Peut-être que je manque quelque chose ici ...
Will Hartung

@Luis: En fait, le fait que le point bleu soit au centre empêche le vert de ne pas le croiser. Je dirais que l'auteur du diagramme ne sait pas comment fonctionne la géométrie.
intuité

9
Le vert et le bleu sont censés se croiser.
Luís Oliveira


7

SLIME for EMACS est un outil formidable pour la programmation LISP. La meilleure partie est d'envoyer du code écrit dans votre éditeur directement à une session LISP en direct. Vous pouvez obtenir un comportement similaire de Vim en utilisant les conseils ici:

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

J'ai ajusté mon propre script afin de pouvoir envoyer à une session SBCL ou Clojure . Cela vous rend beaucoup plus productif et tire parti de la REPL.

": set lisp" démarre le mode d'indentation lisp pour Vim. Mais cela ne fonctionnera pas avec certains dialectes comme Clojure. Pour Clojure, utilisez VimClojure .

Certaines personnes aiment aussi LIMP .


7

Nous voici 9 ans plus tard, et maintenant nous avons Vim 8 et Neovim, tous deux offrant la possibilité d'interagir avec les plugins de manière asynchrone.

vlime est un excellent plugin riche en fonctionnalités qui tire parti de la nouvelle interface async pour fournir un environnement de développement de type SLIME pour Common Lisp.


6
  • Modules complémentaires Vim: Rainbow Parentheses, syntaxe Lisp
  • Modules complémentaires SBCL: rlwrap, sb-aclrepl
  • Workflow: Ion3 (ou un autre WM en mosaïque) avec plusieurs fenêtres de terminal.

    • Modifier Lisp dans Vim
    • Passer à la fenêtre Lisp (en utilisant le clavier bien sûr)
    • Utilisez Cr pour rappeler la ligne pour recharger le système ASDF en question afin que vos modifications deviennent actives.
    • Utilisez le copier / coller X Window pour les petits extraits / modifications.
    • Utilisez beaucoup DESCRIBE, TRACE et APROPOS.
    • Répéter.

5

: définir lisp

Vim a un mode pour vous aider à indenter votre code selon les standards Lisp.

De plus, je modifie les lispwords pour changer la façon dont vim indente mon code.

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


1
l'indentation est facile. Fournir un bon IDE est bien plus important. En fait, VIM ne fera même pas cela (indentation) aussi bien qu'Emacs / SLIME.
Luís Oliveira

3

Vous pouvez essayer Emacs avec l'émulation Vim, ce n'est pas parfait, mais cela peut être quelque peu familier. Je pense que Lisp brille si vous utilisez quelque chose comme Slime ou DrScheme pour faire du développement itératif, tous les autres éditeurs se sentent tout simplement faux.


2

Je sais que vous avez dit de ne pas vous dire d'utiliser Emacs.

Utilisez Emacs.

Sérieux, la configuration SLIME pour Emacs est à peu près la plate-forme de développement standard pour Lisp, et pour une très bonne raison.


5
Je reste fidèle à cette réponse, même si les gens la votent encore en avril 2011. J'aime Vim et l'utilise quotidiennement, mais il n'y a rien de tel que de programmer Lisp dans un environnement écrit en Lisp. "J'aimerais pouvoir faire réagir mon éditeur à ce qui se passe sur mon serveur Lisp. Oh, attendez! Je peux!" est un grand sentiment. Encore une fois: j'aime Vim, mais mon opinion est qu'Emacs est un éditeur bien meilleur pour travailler avec Lisp .
Kirk Strauser

Suivi: 6 ans plus tard et vous votez toujours sur cette réponse vieille de près de dix ans? OK, nous l'avons, nous l'avons! 😀 Je ne le change toujours pas.
Kirk Strauser

2

Il semble y avoir eu des tentatives d'intégration de Lisp de type SLIME dans Vim, mais aucune n'est vraiment allée aussi loin que nécessaire pour être vraiment utile. Je pense que l'intégration d'ECL a été faite, mais pas engagée en amont.

Vous devriez trouver tous les liens pertinents de la page de Cliki sur Vim .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.