Mic*_*are 5 clojure read-eval-print-loop
我正在使用rlwrap,但我没有tab-completion,带有重音的字符会被破坏.这是在Terminal.app的OSX 10.6上.
使用-frlwrap 标志来启用制表符补全。不过,这将是静态完成,基于您指定的某个文件中的静态符号列表。如果您想要动态完成(基于当前运行的 REPL 中定义的任何符号),您应该尝试 Emacs + SLIME 或等效工具。
无论如何,这是生成用于制表符补全的符号列表的一种方法。您必须不时重新生成此文件,因为每个版本中的 Clojure 核心都会添加新符号。(此代码适用于前沿的 clojure-contrib;在早期版本中clojure.contrib.io被调用。)duck-streams
user> (use \'clojure.contrib.io)\nnil\nuser> (with-out-writer "/home/user/.clj-tabcompletion"\n (doseq [[sym _] (ns-publics \'clojure.core)]\n (println sym)))\nnil\nRun Code Online (Sandbox Code Playgroud)\n\n然后:
\n\n$ rlwrap -f ~/.clj-tabcompletion java -jar clojure.jar\nClojure 1.2.0-master-SNAPSHOT\nuser=> def<TAB>\ndefinline defmacro defmethod defmulti defn defonce defprotocol defstruct deftype\nuser=> def\nRun Code Online (Sandbox Code Playgroud)\n\n如果您的终端使用重音符号来破坏字符,则可能存在编码或区域设置问题。这对我来说可以。我不使用 OS X,也不知道你使用什么终端,所以我无法提供帮助。在 Linux 的 Konsole 中,rlwrap 内部:
\n\nuser=> (println "\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xa4\xc3\xab\xc3\xaf\xc3\xb6\xc3\xbc\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\xa3\xc3\xb5\xc3\xb1")\n\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xa4\xc3\xab\xc3\xaf\xc3\xb6\xc3\xbc\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\xa3\xc3\xb5\xc3\xb1\nnil\nuser=> (println "\xe7\x89\x9b\xe3\x81\x8c\xe7\x89\xa7\xe5\xa0\xb4\xe3\x81\xa7\xe8\x8d\x89\xe3\x82\x92\xe9\xa3\x9f\xe3\x81\xb9\xe3\x81\xa6\xe3\x81\x84\xe3\x82\x8b\xe3\x80\x82")\n\xe7\x89\x9b\xe3\x81\x8c\xe7\x89\xa7\xe5\xa0\xb4\xe3\x81\xa7\xe8\x8d\x89\xe3\x82\x92\xe9\xa3\x9f\xe3\x81\xb9\xe3\x81\xa6\xe3\x81\x84\xe3\x82\x8b\xe3\x80\x82\nnil\nRun Code Online (Sandbox Code Playgroud)\n