저는 rlwrap을 사용하고 있지만 탭 완성 기능이 없으며 악센트가있는 문자가 엉망이됩니다. 이것은 Terminal.app의 OSX 10.6에 있습니다.독립형 클로저 REPL을 실행하는 데 권장되는 방법은 무엇입니까?
답변
탭 완성을 사용하려면 rlwrap에 -f
플래그를 사용하십시오. 그것은 당신이 지정한 파일의 정적 인 심볼 목록을 기반으로 정적 인 작업이 될 것입니다. 실행중인 REPL에서 현재 정의 된 심볼을 기반으로하는 동적 완료를 원할 경우 Emacs + SLIME 또는 이와 동등한 버전을 사용해보십시오.
어떤 경우이든 탭 완성 기호 목록을 생성하는 방법 중 하나입니다. 모든 버전에서 Clojure의 핵심에 새로운 기호가 추가되므로이 파일을 수시로 재생성해야합니다. (이 코드는 출혈 가장자리 Clojure의-있는 contrib와 함께 작동합니다 clojure.contrib.io
는 이전 버전의 duck-streams
을 불렀다.) 그런 다음
user> (use 'clojure.contrib.io)
nil
user> (with-out-writer "/home/user/.clj-tabcompletion"
(doseq [[sym _] (ns-publics 'clojure.core)]
(println sym)))
nil
:
$ rlwrap -f ~/.clj-tabcompletion java -jar clojure.jar
Clojure 1.2.0-master-SNAPSHOT
user=> def<TAB>
definline defmacro defmethod defmulti defn defonce defprotocol defstruct deftype
user=> def
터미널이 액센트 문자를 엉망으로하는 경우, 당신은 가능성이 인코딩이 또는 지역 문제. 그것은 나를 위해 잘 작동합니다. 나는 OS X을 사용하지 않으며 당신이 사용하는 터미널을 모른다. 그래서 나는 도울 수 없다. Linux의 Konsole에서 rlwrap :
user=> (println "àèìòùáéíóúäëïöüâêîôûãõñ")
àèìòùáéíóúäëïöüâêîôûãõñ
nil
user=> (println "牛が牧場で草を食べている。")
牛が牧場で草を食べている。
nil
ClojureX OS X 사용자가 원하는대로하려는 시도. 나는 그 자신에 대한 경험이 없다. (나는 리눅스 사용자이다.) 그러나 나는 ClojureX 사람들이 이상한 문제들에 빠지면 도움을 줄 것이라는 인상을 받고있다. (문자 맹 글링? 그, 또는 rlwrap없이 ...).
업데이트 : ClojureX의 최근의 변화 ...
JVM 기반 콘솔 응용 프로그램에서 작성한 Readline 같은 기능에 대한 두 번째 옵션있다 - jline가 : 여기 an announcement on the Clojure group 재에 대한 링크입니다. 당신이 그것을 시도를 제공하려는 경우 (jline.jar 물론, $CLASSPATH
에 포함하여)
java -cp $CLASSPATH jline.ConsoleRunner clojure.main
같은 것을 사용합니다.
또한 독립형 Clojure REPL에서 탭 완성에 대해 들어 본 적이 없다고 생각합니다. 대부분의 사람들은 Emacs/Aquamacs + SLIME, Vimclojure 또는 Java IDE와 같은 것들을 Clojure 플러그인과 함께 사용합니다.
글쎄, 다른 사람들은 괜찮다고 들었어. (Brian의 대답 참조). 그리고 나는 jline을 사용하여 탭 완성을 설정하는 방법을 발견했다. this description. 그리고 나는 그때부터 ClojureX에 대한 소스를 확인했다. 당신을 위해 탭 완성을 설정했다. 저의 원래 응답 중이 부분이 약간의 실수를 저지른 것 같습니다.하지만 ClojureX는 스스로를 구성하는 데 어려움을 줄 수있는 매우 안전한 내기입니다.