名称空间中的IntelliJ(Cursive)REPL评估

时间:2016-02-22 15:55:25

标签: intellij-idea clojure read-eval-print-loop cursive

我使用IntelliJ来编写Clojure。我使用内置的REPL来运行我的代码。我不知道为什么,但是在我运行项目之后,我总是要做“将REPL NS切换到当前文件”然后“在REPL中加载文件”以便将REPL用于主命名空间。我想询问是否有办法避免这些点击并在运行结束后立即使用REPL。

1 个答案:

答案 0 :(得分:3)

在Cursive中,有两种方法可以将表单发送到当前活动的REPL:

  1. 从REPL窗口底部的REPL命令行,按下与键绑定Execute Current Statement关联的组合键(默认Ctrl-Enter
  2. 在文件编辑器窗口中,将插入符号放在表单中,按下与键绑定Send top form to REPL关联的组合键(默认Ctrl-Shift-P,我将其反弹到Ctrl-Enter
  3. 从REPL命令行,将始终在REPL的当前名称空间中评估表单(默认情况下为user)。如果要在另一个命名空间中评估表单,首先必须通过以下任一方式切换到该命名空间:

    • 一个(ns 命名空间)命令
    • 按下与该键相关联的组合键 绑定Switch REPL NS to current file(默认Ctrl-Shift-N

    但是,当您从文件编辑器发送表单时,它可以从文件本身推断出您希望它执行的命名空间。在后台,它将:

    1. 将活动的REPL名称空间切换到文件名称空间
    2. 评估REPL中选定的表格
    3. 切换回先前激活的REPL名称空间。
    4. 这样你就不必在REPL中切换名称空间,而且命名空间混淆的可能性要小得多。

      但是,如果未选中设置Evaluate forms in REPL namespace,则只会这样做。如果没有,它将评估当前REPL命名空间中的表单,就像您通过REPL命令行输入它一样,需要手动切换命名空间。