Usando Vim para el desarrollo Lisp


87

He estado usando Lisp de forma intermitente durante un tiempo, pero estoy empezando a ponerme más serio sobre hacer un trabajo "real" en Lisp. Soy un gran fan de Vim y me preguntaba cómo puedo ser más productivo usando Vim como mi editor para el desarrollo de Lisp. Se aceptan complementos, sugerencias de flujo de trabajo, etc.

Por favor, no diga "use emacs" porque ya he mejorado Vim y realmente lo estoy disfrutando como editor.


¿Qué Lisp, Common Lisp?
pupeño

En este caso, sí, Common Lisp. También juego un poco en Scheme, pero eso es más para la programación exploratoria informal.
Drew Olson

Respuestas:


51

Limp pretende ser un IDE Common Lisp con todas las funciones para Vim. Su valor predeterminado es SBCL, pero se puede cambiar para admitir la mayoría de las otras implementaciones reemplazando "sbcl" por su lisp favorito, en el archivo /usr/local/limp/latest/bin/lisp.sh

Cuando se habla de Lisp en estos días, comúnmente se asume que es Common Lisp, el lenguaje estandarizado por ANSI X3J13 (consulte HyperSpec y Practical Common Lisp para un buen libro de texto) con implementaciones como GNU Clisp, SBCL, CMUCL, AllegroCL y muchas más. otros.

De vuelta a Limp. Hay otras soluciones que son más livianas o intentan hacer otras cosas, pero creo en proporcionar un entorno que le brinde cosas como la coincidencia de corchetes, resaltado, búsqueda de documentación, es decir, convertirlo en una solución llave en mano tanto como sea posible .

En el repositorio de Limp encontrará algunos de los trabajos anteriores del proyecto SlimVim, a saber, la interfaz ECL (Embeddable Common Lisp), combinada con versiones posteriores (7.1); Simon también ha puesto a disposición parches para 7.2 que aún no se han fusionado. La interfaz ECL está documentada en if_ecl.txt .

El trabajo a corto plazo es hacer dicha fusión con 7.2 y enviar un parche a vim_dev para fusionarlo en el árbol oficial de Vim.

Lo que nos lleva a los planes a largo plazo: tener Lisp directamente en Vim hará que sea conveniente comenzar a trabajar en un front-end SWANK (la parte de SLIME que se ejecuta en su Lisp, siendo slime.el la parte que se ejecuta en el editor - la interfaz).

Y en algún punto intermedio, es probable que todo Limp se reescriba en Common Lisp utilizando la interfaz ECL, lo que hace que Limp sea más fácil de mantener (VimScript no es mi favorito) y que los usuarios puedan personalizarlo más fácilmente.

El sitio oficial de Limp se cae de vez en cuando, pero como se señaló, la descarga en Vim.org siempre debería funcionar, y los grupos de apoyo limp-devel y limp-user están alojados en Google Groups. No dude en unirse si cree que necesita una respuesta a una pregunta, o incluso si desea participar en el desarrollo. La mayor parte de la discusión tiene lugar en la lista de desarrollo débil. Si te gusta IRC, estoy en #limp en irc.freenode.net como 'tic'.

¡Buena suerte!


3
¿Cuál es el estado de este trabajo? ¿Sigues interesado en trabajar con él?
Erik Garrison

4
Estoy confundido. La "respuesta" parece una sugerencia de algunas opciones, como usar Limp, pero no explica en absoluto cómo lograrlo. Pensé que la pregunta era, ¿cómo uso Vim con SBCL / lo que sea? Esto realmente no responde la pregunta, así que estoy un poco confundido por todos los votos a favor. ¿Le importaría entrar en un pequeño detalle sobre cómo configurar realmente este entorno y comenzar?
jpswain

Parece que Limp ya no se mantiene: el sitio está inactivo y el último cambio fue en 2008.
kynan

Como han señalado otros, la mayoría de los enlaces anteriores (y en la página ineficaz de vim.org) están rotos hace mucho tiempo. Sin embargo, puede encontrar casi todo (los archivos .vim y la documentación relacionada) en github.com/mikaelj/limp
George Hawkins

28

Podrías darle un respiro a slimv .


+1 Comenzando con slimv, por lo que casi no tengo conocimiento al respecto, pero parece funcionar perfectamente bien desde el primer momento como una alternativa real al slime para emacs. También tiene lanzamientos recientes (v0.9.2 07-nov-2011) mientras que Lim no tiene actualizaciones desde 2008.
jmsu

2
He estado usando slimv por un tiempo; es excelente. Nada más se compara en el espacio.
Tempire

18

Aquí hay un diagrama genial de Xach que resume la situación actual.

diagrama que explica que casi no hay usuarios de VIM que también sean programadores Lisp y que también puedan piratearlo para convertirlo en un buen IDE Lisp ... pésimo texto alternativo :)


61
Eso es tonto. No necesitas C para personalizar Vim. Vim se puede programar desde el primer momento en su propio lenguaje, y la mayoría de las compilaciones también admiten secuencias de comandos de Ruby y Python.
Sam Stokes

6
Entonces, ¿los usuarios de VIM que quieren usar VIM para Common Lisp son el núcleo de todos los usuarios de VIM? Quizás me estoy perdiendo algo aquí ...
Will Hartung

@Luis: En realidad, el hecho de que el punto azul esté en el centro hace que sea imposible que el verde no se cruce con él. Diría que al autor del diagrama le falta cómo funciona la geometría.
intuido el

9
Se supone que el verde y el azul se cruzan.
Luís Oliveira


7

SLIME para EMACS es una herramienta maravillosa para la programación LISP. La mejor parte es enviar código escrito en su editor directamente a una sesión LISP en vivo. Puede obtener un comportamiento similar de Vim usando los consejos aquí:

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

Ajusté mi propio script para poder enviarlo a una sesión SBCL o Clojure . Te hace mucho más productivo y aprovecha el REPL.

": set lisp" inicia el modo de sangría lisp para Vim. Pero no funcionará con algunos dialectos como Clojure. Para Clojure, use VimClojure .

A algunas personas también les gusta LIMP .


7

Aquí estamos 9 años después, y ahora tenemos Vim 8 y Neovim, ambos brindan la capacidad de interactuar con complementos de forma asincrónica.

vlime es un complemento excelente y rico en funciones que aprovecha la nueva interfaz asíncrona para proporcionar un entorno de desarrollo similar a SLIME para Common Lisp.


6
  • Complementos de Vim: Rainbow Parentheses, sintaxis Lisp
  • Complementos de SBCL: rlwrap, sb-aclrepl
  • Flujo de trabajo: Ion3 (o algún otro WM en mosaico) con múltiples ventanas de terminal.

    • Editar Lisp en Vim
    • Cambiar a la ventana Lisp (usando el teclado, por supuesto)
    • Utilice Cr para recuperar la línea para recargar el sistema ASDF en cuestión para que sus cambios se activen.
    • Utilice copiar / pegar X Window para pequeños fragmentos / cambios.
    • Utilice DESCRIBE, TRACE y APROPOS en gran medida.
    • Repetir.

5

: establecer lisp

Vim tiene un modo para ayudarlo a sangrar su código según los estándares Lisp.

Además, modifico las lispwords para cambiar la forma en que vim sangra mi código.

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


1
sangrar es fácil. Proporcionar un buen IDE es mucho más importante. En realidad, VIM ni siquiera hará eso (sangría) tan bien como lo hace Emacs / SLIME.
Luís Oliveira

3

Puede probar Emacs con la emulación de Vim, no es perfecto, pero puede resultar algo familiar. Creo que Lisp brilla si usas algo como Slime o DrScheme haciendo desarrollo iterativo, todos los demás editores se sienten simplemente mal.


2

Sé que dijiste que no te dijera que usaras Emacs.

Utilice Emacs.

En serio, la configuración de SLIME para Emacs es prácticamente la plataforma de desarrollo estándar para Lisp, y por muy buenas razones.


5
Todavía mantengo esta respuesta, aunque la gente todavía la está rechazando en abril de 2011. Me gusta Vim y lo uso a diario, pero no hay nada como programar Lisp en un entorno escrito en Lisp. "Ojalá pudiera hacer que mi editor reaccionara a lo que sucede en mi servidor Lisp. ¡Oh, espera! ¡Puedo!" es un gran sentimiento. Nuevamente: me gusta Vim, pero mi opinión es que Emacs es un editor mucho mejor para trabajar con Lisp .
Kirk Strauser

Seguimiento: ¿6 años después y todavía están votando sobre esta respuesta de casi una década? OK, lo entendemos, lo entendemos! 😀 Todavía no lo voy a cambiar.
Kirk Strauser

2

Parece que ha habido intentos de tener una integración similar a SLIME de Lisp en Vim, pero ninguno ha ido tan lejos como se necesitaba para ser realmente útil. Sin embargo, creo que la integración de ECL se ha realizado, pero no se ha comprometido en sentido ascendente.

Debería encontrar todos los enlaces relevantes de la página de Cliki sobre Vim .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.