Стандартный REPL Clojure с редактором буфера?
-
27-10-2019 - |
Вопрос
Я не ищу IDE или интегрированный REPL. Я просто хотел спросить, знает ли кто-нибудь, можно ли иметь редактор буфера в REPL, как известно из psql или некоторых * nix-оболочек.
Например, в psql вы просто вводите "\ e", и вы получаете последнюю команду в своем РЕДАКТОРЕ, и после этого она выполняется.
Это было бы здорово для clojure repl.
родовое словоИтак, есть такая функция? Где это должно быть реализовано в jline?
<▪Решение :
rlwrap делает свое дело.
Мне пришлось скомпилировать строку чтения ftp://ftp.gnu.org/gnu/readline/, а затем rlwrap http://utopia.knoware.nl/~hlub/rlwrap/# rlwrap .
После этого я мог использовать следующий ярлык для запуска редактора.
Ctrl + ^
rlwrap -m -- java -cp clojure-1.3.0.jar clojure.main
Для использования с leiningen в Mac OSX мне пришлось изменить следующее:
родовое словои экспортировать общий кодовый тег
RLWRAP_EDITOR
Решение
<▪rlwrap
Есть несколько способов добиться желаемого, но rlwrap двоичный файл делает то, что вам нужно.У меня также были проблемы с версией jline в прошлом на Mac OS X, поэтому я перестал его использовать.
Когда я набираю "clj" в своем терминале, он действительно выполняет REPL, заключенный в rlwrap, через следующий сценарий bash в /usr/local/bin/clj
:
Поместите скрипт где угодно на вашем пути, чтобы использовать.
Наконец, вам не нужен сценарий, он у меня просто для удобства.Если rlwrap находится в вашей системе, а clj находится на вашем пути, вы можете просто ввести:
rlwrap clj
Дополнительное чтение из вики-книги Clojure: Улучшение Clojure REPL с помощью rlwrap
Другие советы
Смотрите мои ответы на вопросы Один REPL, чтобы связать их всех? и Как установить Clojure в Ubuntu 10.04 из репозитория Github без clojure.jar .Основные моменты:
- Ни в коем случае не «устанавливайте» clojure.Установите Leiningen и позвольте ему управлять имеющимися у вас версиями clojure, а также настраивать правильные пути к классам для repl или другого использования.
- Если вам нужно запустить clojure вручную, используйте
rlwrap
или другую программу чтения.