История в Clojure REPL

#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