web-dev-qa-db-fra.com

Utilisation de Vim pour le développement LISP

J'utilise LISP de temps en temps, mais je commence à m'intéresser de plus en plus au "vrai" travail dans LISP. Je suis un grand fan de Vim et je me demandais comment être le plus productif en utilisant Vim comme éditeur pour le développement LISP. Les plugins, suggestions de flux de travail, etc. sont tous les bienvenus.

S'il vous plaît, ne dites pas "utilisez emacs" car j'ai déjà monté sur Vim et j'aime vraiment ça en tant qu'éditeur.

86
Drew Olson

Limp vise à être un LISP commun complet IDE 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" pour votre LISP préféré, dans le fichier/usr/local/limp/latest/bin/LISP.sh

En discutant de LISP de nos jours, il est communément 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.

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

Dans le référentiel Limp vous trouverez certains 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 vers 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 fusionner dans l'arborescence officielle de Vim.

Ce qui nous amène aux plans à long terme: avoir LISP directement dans Vim, il sera commode de commencer à travailler sur un frontal 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 dans Common LISP en utilisant l'interface ECL, ce qui rend Limp plus facile à maintenir (VimScript n'est pas mon préféré) et plus facile à personnaliser pour les utilisateurs.

Le site officiel de Limp descend 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 chez Google Groupes. N'hésitez pas à vous joindre si vous sentez que vous avez besoin d'une réponse à une question, ou peut-être même souhaitez participer au développement. La majeure partie de la discussion se déroule sur la liste boiteuse. Si vous aimez l'IRC, je suis en #limp sur irc.freenode.net en tant que "tic".

Bonne chance!

51
Mikael Jansson

Vous pourriez donner slimv une pause.

29
osdf

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

diagram explaining that there are nearly no VIM users that are also LISP programmers and can also hack it to make it a good LISP IDE... lousy alt text :)

17
Luís Oliveira

SLIME pour EMACS est un merveilleux outil 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 avec Vim en utilisant les conseils suivants:

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 . Il vous rend beaucoup plus productif et profite du 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 également.

8
Brian
7
Ben Hoffstein

: définir LISP

Vim dispose d'un mode pour vous aider à mettre en retrait votre code selon les normes LISP.

De plus, je modifie les mots clés pour changer la façon dont vim met en retrait mon code.

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

5
graywh
  • Modules complémentaires Vim: Rainbow Parentheses, syntaxe LISP
  • Modules complémentaires SBCL: rlwrap, sb-aclrepl
  • Flux de travail: 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 C-r 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 fortement DESCRIBE, TRACE et APROPOS.
    • Répéter.
5
Leslie P. Polzer

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 le développement itératif, tous les autres éditeurs se sentent mal.

3
pupeno

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

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

3
Dave Yarwood

Je sais que tu as dit de ne pas te dire d'utiliser Emacs.

Utilisez Emacs.

Sérieusement, 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.

2
Kirk Strauser

Il semble y avoir eu des tentatives pour avoir une intégration de type SLIME de LISP 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 .

2
Nowhere man