Как я могу повторить последнюю строку в Clojure REPL?

В bash или Ruby IRB я могу выполнить команду или оценить выражение, а затем использовать стрелку вверх на клавиатуре для редактирования и повторного запуска того же кода. (Это может быть что-то, что я настроил, но я так не думаю.)

Это не работает для меня в Clojure REPL; Я просто вижу ^[[A набрал, когда я нажимаю стрелку вверх.

Есть ли способ "перепечатать" последнюю строку?

1 ответ

Решение

Как уже упоминалось в комментариях rlwrap подбирает, где нативный Clojure REPL не "делает это", включая навигацию по стрелкам, историю и многое другое.

Однако большую часть (если не все) времени Clojure используется вместе с lein, который имеет встроенный REPL. Каждый раз, когда требуется Repl Clojure, вы можете сделать:

lein repl

Вам не обязательно иметь проект, чтобы запустить его, его можно запустить откуда угодно (учитывая, что у вас есть lein в вашем PATH) и имеет много других очень хороших свойств, которые rlwrap не даст тебе.

Назвать несколько:

  • Если вы запустите эту форму под корнем вашего проекта, он загрузит classpath проекта, чтобы вы могли взаимодействовать со всеми библиотеками и кодом вашего проекта.

  • Это также начнет nREPL к которому вы можете подключиться из любого места (локального / удаленного), включая ваши любимые IDE/ редакторы, которые "nREPL-совместимы". Это позволит (например) vim или же emacs использовать тот REPL, с которого вы начали lein repl оценивать, компилировать, перемещаться (источник) прямо из редактора.

  • Перед тем как начать, он читает и "слушается" ~/.lein/profiles.clj где вы можете сконфигурировать ваши сеансы практически с любым, что вам захочется: ключами gpg, параметрами repl, зависимостями, плагинами и т. д., которые будут загружаться / настраиваться lein repl

Другие вопросы по тегам