Utiliser Vim pour le développement de Lisp

J’utilise et déconnecte Lisp depuis un certain temps, mais je commence à travailler plus sérieusement sur Lisp. Je suis un grand fan de Vim et je me demandais comment je pouvais être plus productif en utilisant Vim comme éditeur pour le développement de Lisp. Les plugins, suggestions de stream de travail, etc. sont les bienvenus.

S’il vous plaît, ne dites pas “utiliser emacs” car je suis déjà monté sur Vim et je l’apprécie vraiment en tant qu’éditeur.

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

Lorsque l’on parle de Lisp ces jours-ci, on suppose généralement qu’il s’agit de Common Lisp, le langage normalisé par ANSI X3J13 (voir HyperSpec et Common Lisp pratique pour un bon manuel) avec des implémentations telles que GNU Clisp, SBCL, CMUCL et AllegroCL. autres.

Retour à la boiterie. Il existe d’autres solutions plus légères, ou qui tentent de faire d’autres choses, mais je crois en la fourniture d’un environnement qui vous offre des fonctionnalités telles que la correspondance de parenthèses, la mise en évidence, la recherche de documentation. .

Dans le repository 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 rendu les correctifs 7.2 disponibles pour la fusion. L’interface ECL est documentée dans if_ecl.txt .

Le travail à court terme consiste à fusionner avec 7.2 et à soumettre un correctif à vim_dev pour le faire fusionner dans l’arbre officiel de Vim.

Ce qui nous amène aux plans à long terme: le fait de disposer de Lisp directement dans Vim facilitera le démarrage d’une interface frontale SWANK (la partie de SLIME qui s’exécute dans votre Lisp, avec slime.el éditeur – le frontend).

Et quelque part entre les deux, il est probable que tout Limp sera réécrit en Common Lisp à l’aide de l’interface ECL, ce qui rendra la maintenance de Limp plus facile (VimScript n’est pas mon favori) et sera plus facile à personnaliser pour les utilisateurs.

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

Bonne chance!

Vous pourriez faire une pause.

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

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

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

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

J’ai ajusté mon propre script pour pouvoir envoyer à une session SBCL ou Clojure . Cela vous rend beaucoup plus productif et profite de la REPL.

“: set lisp” lance 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 le LIMP .

: mettre lisp

Vim a un mode pour vous aider à indenter votre code par les normes Lisp.

En outre, je modifie les mots de passe pour changer la façon dont vim indente mon code.

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

  • Vim add-ons: parenthèses arc-en-ciel, 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 de X Window pour les petits extraits / modifications.
    • Utilisez DESCRIBE, TRACE et APROPOS fortement.
    • Répéter.

Vous pouvez essayer Emacs avec l’émulation Vim, ce n’est pas parfait, mais cela peut vous être 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 juste faux.

Je sais que tu as dit de ne pas te 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.

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

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

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

vlime est un excellent plug-in riche en fonctionnalités qui tire parti de la nouvelle interface asynchrone pour fournir un environnement de développement similaire à SLIME pour Common Lisp.