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代码。接下来就是执行最下面那行代码。在此之前,我们看看上面这个截图,有几点要注意的:
- 我们看到左下角,spacemacs切换到了
Clojure
模式。这是因为我们的代码文件的扩展名是clj
,所以spacemacs自动识别代码是clojure代码,所以切换到合适的模式。 - 在最下面的状态栏,我们还可以看到此时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
通过lein
的repl
执行了我们的代码,并给出了结果。除此以外,我们还可以查看repl
的终端输出。按下CTRL-x b
,查看spacemacs此时的buffer,可以看到cider-repl
这个buffer:
如果我们打开这个buffer,就可以看到repl
的输出。选择这个buffer并回车,截图如下:
这个窗口就是repl
的console output窗口了。如果我们执行一些含有println
函数的代码,那么输出就会显示在上面这个buffer里。下面是例子截图:
如上图所示,println
命令的false!
输出,显示在了repl
的console output里面。