如何在Emacs中智能地重新缩进Clojure代码?

26

我对Clojure和Emacs都不熟悉。

是否有一个Emacs快捷键可以智能地重新缩进整个文件? 如果没有,是否至少有一种方法可以将所选区域向左或向右缩进?

我觉得自己回到了石器时代,一遍又一遍地按箭头。

5个回答

42

C-x h 选择整个缓冲区。 C-M-\ 重新缩进所选区域。


6
C-M-q 则运行 indent-sexp,我发现这个命令结合 beginning-of-defun(位于 C-M-a)使用起来非常有用。 - Hugh
19
使用paredit模式,您只需按下 M-q 键,就可以重新缩进整个defun而无需移动光标位置。 - amalloy
3
抠细节。选择整个缓冲区是使用 C-x h 快捷键。 - kindahero
C-M-\ 应该只是映射到 indent-region。选择不是必要的。 - Micah Elliott

12

Ctrl-x, h(全选)接着按下Tab键(用来缩进)


8
命令(自cider 0.9.0起)

3
当你从序列中捕获数据,例如C-u C-c C-ecider-eval-last-sexp),原始数据输出到您的缓冲区可能难以检查/处理。而普通的代码缩进命令(在这里提到)无法很好地处理它。
为了处理这些评估表达式的结果,请尝试使用cider-format-edn-region
作为一个具体的例子,你是否曾经尝试过重新格式化你的~/.lein/profiles.clj?这很难做到并保持一致,直到你发现cider-format-edn-region。请注意,它会删除任何注释。

我从来没有觉得重新格式化我的 profiles.clj 很难,因为我使用了 pareditaggressive-indent。这种方法的优点是不会删除我的许多注释。 - Radon Rosborough

0
使用cljfmt进行多种可配置的重新格式化/重新缩进。它有一个 Emacs 插件,但也可以通过lein运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接