#clojure #read-eval-print-loop
#clojure #цикл чтения-оценки-печати
Вопрос:
Я делаю свои первые шаги с Clojure, но по какой-то причине клавиши up / down не позволяют мне просматривать историю команд в REPL, как в REPL на других языках. Использует ли Clojure REPL разные ключи для доступа к истории команд или эта функция просто (пока) не реализована?
Ответ №1:
Если вы, случайно, используете Unix-подобную среду, вы можете использовать rlwrap
to для достижения таких приятных вещей, как история командной строки и Ctrl-R для поиска по ней.
Просто добавьте свою команду, которую вы используете для запуска repl, например:
rlwrap java -cp clojure.jar clojure.main
Комментарии:
1. это хорошо сработало в os x. Я только что выполнил ‘brew install rlwrap’ и был готов к работе. Lein также отлично работает.
2. приведенная выше команда не сработала для меня, но сработал более простой вариант: rlwrap lein repl
3. @JeroenvanDijk: Приведенная выше команда работает, даже если у вас не установлен файл lein, но предполагается, что вы задали путь к классу (
cp
параметр) так, чтобы он правильно указывал на jar clojure — в данном случае в том же каталоге. Если вы используете lein (что на самом деле является рекомендуемым способом), вам вообще не нужно вводитьrlwrap
текст — он входит в эту функциональность, попробуйте — простоlein repl
.4. @GoranJovic Ах, да, вы правы,
lein repl
просто уже работает 🙂
Ответ №2:
Или используйте Leiningen или Cake. Любой из них полезен в целом, и вы будете рады научиться их использовать, но, в частности, они автоматически используют readline или jline, где это возможно.
Комментарии:
1. 2!
lein repl
твой друг2. «lein swank» также является вашим другом, тогда emacs обеспечит подсветку синтаксиса, paredit и другие полезные функции.
Ответ №3:
Для этого вы можете улучшить REPL с помощью JLine, см. Здесь .
Комментарии:
1. Я использую Ubuntu, JLine исправляет историю за счет прерывания удаления?
Ответ №4:
Зависит от того, какой REPL вы используете. Большинство хороших REPL имеют эту функциональность и многое другое.
Например, если вы переходите с Java как пользователь Eclipse, вы можете захотеть использовать встроенный nREPL, предоставляемый плагином Counterclockwise. Я обнаружил, что это проще в использовании, чем настройка отдельной выделенной среды Clojure.
Ответ №5:
C-, M-x slime-repl-прямой ввод C-, M-x slime-repl-обратный ввод Переход к следующему / предыдущему элементу истории.
http://common-lisp.net/project/slime/doc/html/Input-Navigation.html