Использование Vim для разработки Lisp

87

Я время от времени использую Lisp, но я начинаю более серьезно относиться к выполнению "настоящей" работы с Lisp. Я большой поклонник Vim, и мне было интересно, как я могу быть наиболее продуктивным, используя Vim в качестве редактора для разработки Lisp. Плагины, предложения по рабочему процессу и т. Д. Приветствуются.

Пожалуйста, не говорите «используйте emacs», так как я уже использовал Vim и мне это очень нравится как редактор.

Дрю Олсон
источник
Какой Лисп, Общий Лисп?
pupeno
В данном случае да, Common Lisp. Я тоже немного поиграюсь в Scheme, но это больше для случайного исследовательского программирования.
Дрю Олсон,

Ответы:

51

Limp стремится стать полнофункциональной средой разработки Common Lisp для Vim. По умолчанию используется SBCL, но его можно изменить для поддержки большинства других реализаций, заменив «sbcl» на ваш любимый lisp в файле /usr/local/limp/latest/bin/lisp.sh

При обсуждении Lisp в наши дни обычно предполагается, что это Common Lisp, язык, стандартизованный ANSI X3J13 (см. HyperSpec и Practical Common Lisp для хорошего учебника) с такими реализациями, как GNU Clisp, SBCL, CMUCL, AllegroCL и многие другие. другие.

Вернуться к хромоте. Существуют и другие решения, которые более легкие или пытаются делать другие вещи, но я верю в создание среды, которая дает вам такие вещи, как сопоставление скобок, выделение, поиск документации, т. Е. Как можно более готовое решение. .

В репозитории Limp вы найдете некоторые из предыдущих работ проекта SlimVim, а именно интерфейс ECL (Embeddable Common Lisp), объединенный с более поздними версиями (7.1); Саймон также сделал патчи для 7.2, которые еще предстоит объединить. Интерфейс ECL задокументирован в if_ecl.txt .

Краткосрочная работа заключается в том, чтобы выполнить указанное слияние с 7.2 и отправить патч на vim_dev, чтобы он слился с официальным деревом Vim.

Это подводит нас к долгосрочным планам: наличие Lisp непосредственно в Vim позволит удобно начать работу над интерфейсом SWANK (той частью SLIME, которая работает в вашем Lisp, а slime.el является частью, которая запускается в вашем Lisp). редактор - фронтенд).

И где-то посередине, вполне вероятно, что весь Limp будет переписан на Common Lisp с использованием интерфейса ECL, что упростит поддержку Limp (VimScript не мой любимый) и будет проще для пользователей в настройке.

Официальный сайт Limp снижается время от времени, но , как указывалось, загрузить в Vim.org должны всегда работать, и группы поддержки хромота-Devel и хромал-пользователей размещаются с Google Groups. Не стесняйтесь присоединяться, если вы чувствуете, что вам нужен ответ на вопрос или, возможно, даже хотите участвовать в разработке. Большая часть обсуждений происходит в списке limp-devel. Если вы работаете в IRC, я на irc.freenode.net указал #limp как «тик».

Удачи!

Микаэль Янссон
источник
3
Каков статус этой работы? Вы все еще заинтересованы в работе с ним?
Эрик Гаррисон,
4
Я в замешательстве. «Ответ» кажется предложением нескольких вариантов, таких как использование Limp, но совершенно не объясняет, как этого добиться. Я думал, что вопрос в том, как мне использовать Vim с SBCL и чем угодно. Это не совсем ответ на вопрос, поэтому меня немного смущают все положительные голоса. Не могли бы вы рассказать немного о том, как на самом деле настроить эту среду и начать работу?
jpswain 02
Кажется, Limp больше не поддерживается: сайт не работает, а последнее изменение было в 2008 году.
kynan
Как отметили другие, большинство ссылок выше (и на слабой странице на vim.org) давно не работают. Однако вы можете найти почти все (файлы .vim и соответствующую документацию) на github.com/mikaelj/limp
Джордж Хокинс,
28

Вы могли бы дать Slimv передышку.

osdf
источник
+1 Просто начинаю с slimv, так что почти ничего об этом не знаю, но, похоже, он отлично работает из коробки в качестве реальной альтернативы slime для emacs. Также у него есть недавние релизы (v0.9.2 07-ноя-2011), а у limp нет обновлений с 2008.
jmsu
2
Некоторое время пользуюсь slimv; это отлично. Ничто другое не сравнится в этом пространстве.
tempire
18

Вот классная диаграмма от Xach, которая суммирует текущую ситуацию.

диаграмма, объясняющая, что почти нет пользователей VIM, которые также являются программистами Lisp и могут также взломать его, чтобы сделать его хорошей IDE Lisp ... паршивый альтернативный текст :)

Луис Оливейра
источник
61
Это глупо. Вам не нужен C для настройки Vim. Vim готов к созданию сценариев на собственном языке, и большинство сборок также поддерживают сценарии Ruby и Python.
Сэм Стоукс
6
Итак, пользователи VIM, которые хотят использовать VIM для Common Lisp, являются ядром всех пользователей VIM ?? Может быть, мне что-то здесь не хватает ...
Уилл Хартунг
@Luis: Фактически, тот факт, что синяя точка находится в центре, делает невозможным пересечение зеленой точки с ней. Я бы сказал, что автору схемы не известно, как работает геометрия.
интуитивно понятен
9
Предполагается, что зеленый и синий пересекаются.
Луис Оливейра,
7

SLIME для EMACS - замечательный инструмент для программирования LISP. Лучшая часть - это отправка кода, написанного в вашем редакторе, прямо в живую сессию LISP. Вы можете добиться аналогичного поведения из Vim, используя советы здесь:

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

Я скорректировал свой собственный скрипт, чтобы можно было отправлять его в сеанс SBCL или Clojure . Это делает вас намного более продуктивным и использует REPL.

": set lisp" запускает режим отступов lisp для Vim. Но это не будет работать с некоторыми диалектами, такими как Clojure. Для Clojure используйте VimClojure .

Некоторым людям нравится LIMP .

Брайан
источник
7

Вот и прошло 9 лет, и теперь у нас есть Vim 8 и Neovim, которые предоставляют возможность асинхронного взаимодействия с плагинами.

vlime - отличный многофункциональный плагин, который использует преимущества нового асинхронного интерфейса для обеспечения SLIME-подобной среды разработки для Common Lisp.

Дэйв Ярвуд
источник
6
  • Надстройки Vim: круглые скобки, синтаксис Lisp
  • Дополнения SBCL: rlwrap, sb-aclrepl
  • Рабочий процесс: Ion3 (или какой-нибудь другой плиточный WM) с несколькими окнами терминала.

    • Редактировать Лисп в Vim
    • Переключитесь в окно Lisp (конечно, используя клавиатуру)
    • Используйте Cr, чтобы вызвать строку для перезагрузки рассматриваемой системы ASDF, чтобы ваши изменения стали активными.
    • Используйте копирование / вставку X Window для небольших фрагментов / изменений.
    • Активно используйте DESCRIBE, TRACE и APROPOS.
    • Повторение.
Лесли П. Ползер
источник
5

: set lisp

В Vim есть режим, который поможет вам сделать отступ в коде по стандартам Lisp.

Кроме того, я изменяю lispwords, чтобы изменить отступы в моем коде vim.

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

серый
источник
1
делать отступы легко. Гораздо важнее предоставить хорошую IDE. На самом деле VIM даже этого не делает (отступы), как Emacs / SLIME.
Луис Оливейра,
3

Вы можете попробовать Emacs с эмуляцией Vim, это не идеально, но может показаться знакомым. Я думаю, что Lisp великолепен, если вы используете что-то вроде Slime или DrScheme, выполняя итеративную разработку, все остальные редакторы чувствуют себя неправильно.

пупено
источник
2

Я знаю, что вы сказали не говорить вам использовать Emacs.

Используйте Emacs.

Серьезно, установка SLIME для Emacs в значительной степени является стандартной платформой разработки для Lisp, и на это есть очень веские причины.

Кирк Штраузер
источник
5
Я все еще поддерживаю этот ответ, хотя люди все еще голосуют за него по состоянию на апрель 2011 года. Мне нравится Vim, и я использую его ежедневно, но нет ничего лучше, чем программировать Lisp в среде, написанной на Lisp. «Я бы хотел, чтобы мой редактор реагировал на то, что происходит на моем Lisp-сервере. Ой, подождите! Я могу!» это прекрасное чувство. Еще раз: мне нравится Vim, но я считаю, что Emacs - гораздо лучший редактор для работы с Lisp .
Кирк Штраузер
Продолжение: 6 лет спустя, а вы все еще голосуете за ответ почти десятилетней давности? Хорошо, мы поняли, мы поняли! 😀 Я все еще не меняю его.
Кирк Штраузер
2

Похоже, были попытки реализовать SLIME-подобную интеграцию Lisp в Vim, но ни одна из них не зашла настолько далеко, чтобы быть действительно полезной. Я думаю, что интеграция ECL была осуществлена, но еще не реализована.

Вы должны найти все соответствующие ссылки на странице Cliki о Vim .

Никуда человек
источник