Używanie Vima do rozwoju Lispa

87

Od jakiegoś czasu używam Lispa z przerwami, ale zaczynam poważniej podchodzić do wykonywania „prawdziwej” pracy w Lisp. Jestem wielkim fanem Vima i zastanawiałem się, jak mogę być najbardziej produktywny, używając Vima jako mojego edytora do rozwoju Lispa. Wtyczki, sugestie dotyczące przepływu pracy itp. Są mile widziane.

Proszę, nie mów "użyj emacsa", ponieważ już rozwinąłem Vima i naprawdę podoba mi się to jako edytor.

Drew Olson
źródło
Który Lisp, Common Lisp?
pupeno
W tym przypadku tak, Common Lisp. W Scheme też trochę się bawię, ale to raczej przypadkowe programowanie eksploracyjne.
Drew Olson,

Odpowiedzi:

51

Limp ma być w pełni funkcjonalnym środowiskiem Common Lisp IDE dla Vima. Domyślnie jest to SBCL, ale można go zmienić, aby obsługiwał większość innych implementacji, zastępując „sbcl” ulubionym lispem w pliku /usr/local/limp/latest/bin/lisp.sh

Omawiając Lisp w dzisiejszych czasach, powszechnie przyjmuje się, że jest to Common Lisp, język znormalizowany przez ANSI X3J13 (patrz HyperSpec i Practical Common Lisp dla dobrego podręcznika) z implementacjami takimi jak GNU Clisp, SBCL, CMUCL, AllegroCL i wiele inni.

Powrót do Limp. Istnieją inne rozwiązania, które są lżejsze lub próbują robić inne rzeczy, ale wierzę w zapewnienie środowiska, które daje takie rzeczy, jak dopasowywanie nawiasów, podświetlanie, przeszukiwanie dokumentacji, czyli uczynienie z tego rozwiązania pod klucz w jak największym stopniu .

W repozytorium Limp znajdziesz część wcześniejszych prac projektu SlimVim, a mianowicie interfejs ECL (Embeddable Common Lisp), połączony z późniejszymi wydaniami (7.1); Simon udostępnił również łatki do 7.2, które nie zostały jeszcze połączone. Interfejs ECL jest udokumentowany w if_ecl.txt .

Krótkoterminowa praca polega na połączeniu z 7.2 i przesłaniu łatki do vim_dev, aby została włączona do oficjalnego drzewa Vima.

Co prowadzi nas do długoterminowych planów: posiadanie Lispa bezpośrednio w Vimie ułatwi rozpoczęcie pracy nad front-endem SWANK (część SLIME, która działa w Twoim Lispie, gdzie slime.el jest częścią działającą w edytor - frontend).

A gdzieś pomiędzy, jest prawdopodobne, że cały Limp zostanie przepisany w Common Lisp przy użyciu interfejsu ECL, dzięki czemu Limp będzie łatwiejszy w utrzymaniu (VimScript nie jest moim ulubionym) i będzie łatwiejszy do dostosowania przez użytkowników.

Oficjalna strona Limp idzie w dół od czasu do czasu, ale jak wspomniałem, do pobrania na Vim.org zawsze powinien pracować, a grupy wsparcia wiotki-devel i wiotki-użytkownika są przechowywane w Google Groups. Nie wahaj się dołączyć, jeśli czujesz, że potrzebujesz odpowiedzi na pytanie, a może nawet chcesz dołączyć do rozwoju. Większość dyskusji toczy się na liście bezwładnego rozwoju. Jeśli interesujesz się IRC, jestem na #limp na irc.freenode.net jako „tic”.

Powodzenia!

Mikael Jansson
źródło
3
Jaki jest stan tej pracy? Czy nadal jesteś zainteresowany pracą z nim?
Erik Garrison
4
Jestem zmieszany. „Odpowiedź” wydaje się być sugestią kilku opcji, takich jak używanie Limp, ale w ogóle nie wyjaśnia, jak to osiągnąć. Pomyślałem, że pytanie brzmi, jak używać Vima z SBCL / czymkolwiek. To tak naprawdę nie odpowiada na pytanie, więc jestem trochę zdezorientowany wszystkimi pozytywnymi opiniami. Czy mógłbyś zagłębić się w szczegóły, jak właściwie skonfigurować to środowisko i zacząć?
jpswain
Wydaje Limp nie jest już aktualizowany: strona jest w dół, a ostatnia zmiana była w 2008 roku
kynan
Jak zauważyli inni, większość linków powyżej (i na niestabilnej stronie vim.org) jest dawno zepsuta. Jednak prawie wszystko (pliki .vim i związaną z nimi dokumentację) można znaleźć na github.com/mikaelj/limp
George Hawkins
28

Możesz dać slimvowi przerwę.

osdf
źródło
+1 Dopiero zaczynam od slimv, więc prawie nie ma o nim żadnej wiedzy, ale wydaje się działać doskonale po wyjęciu z pudełka jako prawdziwa alternatywa dla szlamu dla emacsa. Ma również ostatnie wydania (v0.9.2 07-lis-2011), podczas gdy limp nie ma aktualizacji od 2008 roku.
jmsu
2
Używam slimv przez jakiś czas; to jest świetne. Nic innego nie może się równać w przestrzeni.
tempire
18

Oto fajny diagram autorstwa Xacha, który podsumowuje obecną sytuację.

diagram wyjaśniający, że prawie nie ma użytkowników VIM, którzy są również programistami Lisp i mogą również zhakować go, aby uczynić go dobrym Lisp IDE ... kiepski tekst alternatywny :)

Luís Oliveira
źródło
61
To głupie. Nie potrzebujesz C, aby dostosować Vima. Vim jest gotowy do obsługi skryptów w swoim własnym języku, a większość kompilacji obsługuje również skrypty Ruby i Python.
Sam Stokes
6
Czyli użytkownicy VIM, którzy chcą używać VIM dla Common Lisp, są rdzeniem wszystkich użytkowników VIM? Może czegoś mi brakuje ...
Will Hartung,
@Luis: Właściwie fakt, że niebieska kropka znajduje się w środku, uniemożliwia zieloną, aby się z nią nie przecięła. Powiedziałbym, że autorowi diagramu brakuje tego, jak działa geometria.
intuicyjnie
9
Zielony i niebieski mają się przecinać.
Luís Oliveira
7

SLIME for EMACS to wspaniałe narzędzie do programowania LISP. Najlepsze jest wysłanie kodu napisanego w twoim edytorze bezpośrednio do sesji LISP na żywo. Możesz uzyskać podobne zachowanie z Vima, korzystając z poniższych wskazówek:

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

Dostosowałem własny skrypt, aby móc wysyłać do sesji SBCL lub Clojure . Sprawia, że ​​jesteś znacznie bardziej produktywny i korzysta z REPL.

": set lisp" uruchamia tryb wcięcia lisp dla Vima. Ale to nie zadziała z niektórymi dialektami, takimi jak Clojure. W przypadku Clojure użyj VimClojure .

Niektórzy ludzie również lubią LIMP .

Brian
źródło
7

Tutaj jesteśmy 9 lat później, a teraz mamy Vim 8 i Neovim, oba zapewniają możliwość asynchronicznej interakcji z wtyczkami.

vlime to doskonała, bogata w funkcje wtyczka, która wykorzystuje nowy interfejs asynchroniczny, aby zapewnić środowisko programistyczne podobne do SLIME dla Common Lisp.

Dave Yarwood
źródło
6
  • Dodatki Vima: Rainbow Nawiasy, składnia Lisp
  • Dodatki SBCL: rlwrap, sb-aclrepl
  • Przepływ pracy: Ion3 (lub inny kafelkowy WM) z wieloma oknami terminala.

    • Edytuj Lisp w Vimie
    • Przejdź do okna Lispa (oczywiście używając klawiatury)
    • Użyj Cr, aby przywołać linię, aby ponownie załadować dany system ASDF, aby zmiany stały się aktywne.
    • Użyj kopiuj / wklej X Window dla małych fragmentów / zmian.
    • Używaj intensywnie DESCRIBE, TRACE i APROPOS.
    • Powtarzać.
Leslie P. Polzer
źródło
5

: zestaw lisp

Vim ma tryb, który pomoże ci w tworzeniu wcięć w kodzie według standardów Lisp.

Ponadto modyfikuję lispwords, aby zmienić sposób wcięcia mojego kodu przez vim.

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

szarość
źródło
1
wcięcie jest łatwe. Zapewnienie dobrego środowiska IDE jest znacznie ważniejsze. Właściwie VIM nawet tego nie zrobi (wcięcie) tak dobrze, jak robi to Emacs / SLIME.
Luís Oliveira
3

Możesz spróbować Emacsa z emulacją Vima, nie jest doskonały, ale może być trochę znajomy. Myślę, że Lisp błyszczy, jeśli używasz czegoś takiego jak Slime lub DrScheme do iteracyjnego rozwoju, wszyscy inni redaktorzy czują się po prostu źle.

pupeno
źródło
2

Wiem, że powiedziałeś, żeby nie mówić ci, żebyś używał Emacsa.

Użyj Emacsa.

Poważne, SLIME setup dla Emacs jest dość dużo standardową platformę dla rozwoju Lisp, a dla bardzo dobrego powodu.

Kirk Strauser
źródło
5
Wciąż trzymam się tej odpowiedzi, mimo że ludzie nadal głosują przeciwko niej od kwietnia 2011. Lubię Vima i używam go codziennie, ale nie ma to jak programowanie Lispa w środowisku napisanym w Lisp. „Chciałbym móc zmusić mojego edytora do reagowania na to, co dzieje się na moim serwerze Lisp. Och, czekaj! Mogę!” to wspaniałe uczucie. Ponownie: lubię Vima, ale moim zdaniem Emacs jest znacznie lepszym edytorem do pracy z Lispem .
Kirk Strauser,
Kontynuacja: 6 lat później i nadal głosujecie nad tą, sprzed prawie dziesięciu lat, odpowiedzią? OK, rozumiemy, rozumiemy! 😀 Nadal tego nie zmieniam.
Kirk Strauser
2

Wydaje się, że były próby integracji Lispa podobnej do SLIME w Vimie, ale żadna nie posunęła się tak daleko, jak to konieczne, aby być naprawdę użyteczną. Myślę, że integracja ECL została jednak dokonana, ale nie została podjęta na wcześniejszym etapie.

Powinieneś znaleźć wszystkie odpowiednie linki ze strony Cliki o Vimie .

Człowiek znikąd
źródło