SPACEMACS使用随笔

这次写写cider。cider是spacemacs的clojure开发层(layer)。spacemacs里面的各个功能模块称为layer,所以cider就是spacemacs默认的Clojure layer。这个是cider的网站:

https://practicalli.github.io/spacemacs/

这个是网站截图:

cider这个英文单词的含义如下:

看起来还是挺美味的。

这个layer是spacemacs默认安装的,它需要你的机器上装好了Leiningen。Leiningen是Clojure的一站式工具包,它的网站在这里:

https://leiningen.org/

网站截图如下:

照着网站里面的说明一步一步安装好就可以了。安装好以后,可以看看自己的机器上面有没有lein命令可供使用了:

接下来回到spacemacs,创建一个clojure代码文件:

如上所示,我创建了foo.clj文件,然后写了点clojure代码。接下来就是执行最下面那行代码。在此之前,我们看看上面这个截图,有几点要注意的:

  1. 我们看到左下角,spacemacs切换到了Clojure模式。这是因为我们的代码文件的扩展名是clj,所以spacemacs自动识别代码是clojure代码,所以切换到合适的模式。
  2. 在最下面的状态栏,我们还可以看到此时cider layer的状态是[not connected]。因为这个时候,我们还没有执行任何代码,所以cider layer还没有连接到lein,也没有通过lein repl来启动clojure的CLI。

此时,我们按下CTRL-x,截图如下:

可以看到调出了spacemacs的命令执行菜单。注意我使用的是emacs编辑模式,而如果你在安装spacemacs的时候选的是vim编辑模式,可能按键命令会完全不同。

此时再按CTRL-e,这个时候就会调出cider的执行层,截图如下:

注意最底下写的,说cider-eval-last-sexp命令需要一个Clojure REPL。翻译过来就是说,如果要执行你的clojure代码,需要一个clojure环境。

然后上面的信息继续讲,如果你明白你要干什么,就jack-in吧,然后jack-in的命令按键是M-RET,也就是按下ESC,然后再按回车(注意我是用的emacs编辑模式)。

于是我按下ESC-回车,截图如下:

可以看到调出了cider layer的命令菜单,而cider-jack-in命令的按键是',就是单引号。于是按下,截图如下:

如上图所示,可以看到cider让我们确认是否要在非clojure project的环境下执行。因为我这个foo.clj代码并没有放在lein生成的标准clojure项目中,所以才会出现这个对话选项。此时我选择y,然后cider就会去加载lein repl。这个加载过程需要一段时间,耐心等候一会,最终会看到cider已经处于运行状态,截图如下:

如上图所示,可以看到cider不再是[not connected]的状态了。此时我们在光标停留在最后一行代码的情况下,再次按下CTRL-x CTRL-e,来执行最后一行代码。截图如下:

可以看到,cider通过leinrepl执行了我们的代码,并给出了结果。除此以外,我们还可以查看repl的终端输出。按下CTRL-x b,查看spacemacs此时的buffer,可以看到cider-repl这个buffer:

如果我们打开这个buffer,就可以看到repl的输出。选择这个buffer并回车,截图如下:

这个窗口就是repl的console output窗口了。如果我们执行一些含有println函数的代码,那么输出就会显示在上面这个buffer里。下面是例子截图:

如上图所示,println命令的false!输出,显示在了repl的console output里面。