Usando Vim para desenvolvimento Lisp

87

Tenho usado Lisp intermitentemente por um tempo, mas estou começando a ficar mais sério sobre fazer algum trabalho "real" em Lisp. Sou um grande fã do Vim e estava me perguntando como posso ser mais produtivo usando o Vim como meu editor para desenvolvimento Lisp. Plugins, sugestões de fluxo de trabalho, etc. são bem-vindos.

Por favor, não diga "use emacs", pois já desenvolvi o Vim e estou gostando muito dele como editor.

Drew Olson
fonte
Qual Lisp, Lisp comum?
pupeno de
Nesse caso, sim, Common Lisp. Também faço algumas brincadeiras no Scheme, mas isso é mais para programação exploratória casual.
Drew Olson em

Respostas:

51

Limp pretende ser um Common Lisp IDE completo para Vim. O padrão é SBCL, mas pode ser alterado para suportar a maioria das outras implementações substituindo "sbcl" por seu lisp favorito, no arquivo /usr/local/limp/latest/bin/lisp.sh

Ao discutir Lisp hoje em dia, é comumente assumido como Common Lisp, a linguagem padronizada por ANSI X3J13 (veja o HyperSpec e Practical Common Lisp para um bom livro) com implementações como GNU Clisp, SBCL, CMUCL, AllegroCL e muitos outras.

Voltar para o Limp. Existem outras soluções que são mais leves ou tentam fazer outras coisas, mas acredito em fornecer um ambiente que forneça coisas como correspondência de colchetes, realce, consulta de documentação, ou seja, tornando-a uma solução chave na mão, tanto quanto possível .

No repositório Limp você encontrará alguns dos trabalhos anteriores do projeto SlimVim, nomeadamente a interface ECL (Embeddable Common Lisp), fundida com versões posteriores (7.1); Simon também disponibilizou patches para 7.2 que ainda não foram incorporados. A interface ECL está documentada em if_ecl.txt .

O trabalho de curto prazo é fazer a referida fusão com o 7.2 e enviar um patch ao vim_dev para que seja integrado à árvore oficial do Vim.

O que nos leva aos planos de longo prazo: ter Lisp diretamente no Vim tornará conveniente começar a trabalhar em um front-end SWANK (a parte do SLIME que roda em seu Lisp, com slime.el sendo a parte que roda no editor - o frontend).

E em algum ponto intermediário, é provável que todo o Limp seja reescrito em Common Lisp usando a interface ECL, tornando o Limp mais fácil de manter (VimScript não é meu favorito) e sendo mais fácil para os usuários personalizarem.

O site oficial do Limp fica fora do ar de vez em quando, mas como apontado, o download no Vim.org deve sempre funcionar, e os grupos de suporte limp-devel e limp-user são hospedados no Google Groups. Não hesite em aderir se achar que precisa de uma resposta para uma pergunta ou talvez até mesmo se quiser participar do desenvolvimento. A maior parte da discussão ocorre na lista limp-devel. Se você gosta de IRC, estou em #limp em irc.freenode.net como 'tic'.

Boa sorte!

Mikael Jansson
fonte
3
Qual é o status deste trabalho? Você ainda está interessado em trabalhar com ele?
Erik Garrison
4
Estou confuso. A "resposta" parece uma sugestão de algumas opções, como usar o Limp, mas não explica como fazer isso. Eu pensei que a questão era: como faço para usar o Vim com SBCL / qualquer coisa. Isso realmente não responde à pergunta, então estou um pouco confuso com todos os votos positivos. Você se importaria de entrar em alguns detalhes sobre como realmente configurar este ambiente e começar?
jpswain
Parece que o Limp não é mais mantido: o site está fora do ar e a última alteração foi em 2008.
kynan
Como notado por outros, a maioria dos links acima (e na página limp em vim.org) estão quebrados há muito tempo. No entanto, você pode encontrar quase tudo (os arquivos .vim e a documentação relacionada) em github.com/mikaelj/limp
George Hawkins
28

Você pode dar uma pequena pausa.

osdf
fonte
+1 Apenas começando com o slimv então quase nenhum conhecimento sobre ele, mas parece funcionar perfeitamente bem fora da caixa como uma alternativa real ao slime para emacs. Também tem lançamentos recentes (v0.9.2 07-nov-2011), enquanto o limp não tem atualizações desde 2008.
jmsu
2
Estou usando o slimv por um tempo; é excelente. Nada mais se compara no espaço.
tempire
18

Aqui está um diagrama legal de Xach que resume a situação atual.

diagrama explicando que quase não há usuários VIM que também são programadores Lisp e também podem hackear para torná-lo um bom IDE Lisp ... texto alternativo ruim :)

Luís Oliveira
fonte
61
Isso é bobagem. Você não precisa de C para personalizar o Vim. O Vim pode ser criado por script em sua própria linguagem, e a maioria das compilações também oferece suporte a scripts Ruby e Python.
Sam Stokes
6
Então, os usuários do VIM que desejam usar o VIM para Common Lisp são o núcleo de todos os usuários do VIM ?? Talvez eu esteja faltando alguma coisa aqui ...
Will Hartung
@Luis: Na verdade, o fato de o ponto azul estar no centro torna impossível para o ponto verde não cruzar com ele. Eu diria que o autor do diagrama não sabe como funciona a geometria.
intuído em
9
O verde e o azul devem se cruzar.
Luís Oliveira
7

SLIME para EMACS é uma ferramenta maravilhosa para programação LISP. A melhor parte é enviar código escrito em seu editor direto para uma sessão LISP ao vivo. Você pode obter um comportamento semelhante do Vim usando as dicas aqui:

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

Eu ajustei meu próprio script para enviar para uma sessão SBCL ou Clojure . Isso o torna muito mais produtivo e aproveita o REPL.

": set lisp" inicia o modo de indentação lisp para o Vim. Mas não funcionará com alguns dialetos como Clojure. Para Clojure, use VimClojure .

Algumas pessoas gostam de LIMP também.

Brian
fonte
7

Aqui estamos, 9 anos depois, e agora temos o Vim 8 e o Neovim, ambos fornecendo a capacidade de interagir com plug-ins de forma assíncrona.

vlime é um plug-in excelente e rico em recursos que aproveita a vantagem da nova interface assíncrona para fornecer um ambiente de desenvolvimento tipo SLIME para Common Lisp.

Dave Yarwood
fonte
6
  • Complementos do Vim: parênteses de arco-íris, sintaxe Lisp
  • Complementos SBCL: rlwrap, sb-aclrepl
  • Fluxo de trabalho: Ion3 (ou algum outro WM lado a lado) com várias janelas de terminal.

    • Editar Lisp no Vim
    • Mudar para a janela Lisp (usando o teclado, é claro)
    • Use Cr para recuperar a linha para recarregar o sistema ASDF em questão para que suas alterações se tornem ativas.
    • Use X Window copiar / colar para pequenos trechos / alterações.
    • Use DESCRIBE, TRACE e APROPOS intensamente.
    • Repetir.
Leslie P. Polzer
fonte
5

: set lisp

O Vim tem um modo para ajudá-lo a indentar seu código pelos padrões Lisp.

Além disso, eu modifico as lispwords para mudar como o vim recua meu código.

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

graywh
fonte
1
recuar é fácil. Fornecer um bom IDE é muito mais importante. Na verdade, o VIM nem mesmo faz isso (indentação) tão bem quanto o Emacs / SLIME faz.
Luís Oliveira
3

Você pode dar uma chance ao Emacs com a emulação do Vim, não é perfeito, mas pode ser um pouco familiar. Eu acho que Lisp brilha se você usar algo como Slime ou DrScheme fazendo desenvolvimento iterativo, todos os outros editores se sentirão errados.

pupeno
fonte
2

Eu sei que você disse para não dizer para usar o Emacs.

Use o Emacs.

Sério, a configuração do SLIME para Emacs é praticamente a plataforma de desenvolvimento padrão para Lisp, e por um bom motivo.

Kirk Strauser
fonte
5
Eu ainda mantenho esta resposta, embora as pessoas ainda estejam votando contra ela em abril de 2011. Eu gosto do Vim e uso-o diariamente, mas não há nada como programar Lisp em um ambiente escrito em Lisp. "Eu gostaria de poder fazer meu editor reagir ao que está acontecendo no meu servidor Lisp. Oh, espere! Eu posso!" é uma sensação ótima. Novamente: eu gosto do Vim, mas minha opinião é que o Emacs é um editor muito melhor para trabalhar com Lisp .
Kirk Strauser
Acompanhamento: 6 anos depois e vocês ainda estão votando nesta resposta de quase uma década? OK, entendemos, entendemos! 😀 Eu ainda não estou mudando isso.
Kirk Strauser
2

Parece ter havido tentativas de ter uma integração do Lisp no Vim do tipo SLIME, mas nenhuma foi tão longe quanto o necessário para ser realmente útil. Eu acho que a integração da ECL foi feita, mas não comprometida com o upstream.

Você deve encontrar todos os links relevantes na página de Cliki sobre o Vim .

Homem de lugar nenhum
fonte