【问题标题】:How do I intelligently re-indent Clojure in Emacs?如何在 Emacs 中智能地重新缩进 Clojure?
【发布时间】:2012-07-10 12:49:54
【问题描述】:

我是 Clojure 的新手,也是 Emacs 的新手。

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

反复按箭头的感觉就像回到了石器时代

【问题讨论】:

    标签: emacs clojure


    【解决方案1】:

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

    【讨论】:

    • C-M-q 运行indent-sexp,我也发现它非常有用,尤其是与beginning-of-defun 结合使用(它存在于C-M-a)。
    • 在paredit模式下,你只需按M-q,它会重新缩进整个defun而不用移动点。
    • nitpick.,它的C-x h 用于选择整个缓冲区
    • C-M-\ 应该只是到indent-region 的映射。选择应该不是必需的。
    【解决方案2】:

    Ctrl-xh(全选)后跟Tab(缩进)

    【讨论】:

      【解决方案3】:

      cider-format-buffer 命令(自 cider 0.9.0 起)

      【讨论】:

        【解决方案4】:

        当您从像C-u C-c C-e 这样的序列中捕获数据时 (cider-eval-last-sexp),输出到缓冲区的原始数据可以是 难以检查/使用。和正常的代码缩进命令 (在此处的答案中提到)处理不好。

        要处理此类评估表达式的结果,请尝试 cider-format-edn-region.

        作为一个具体的例子,您是否尝试过重新格式化您的 ~/.lein/profiles.clj?这很难做到和保持 一致,直到您发现cider-format-edn-region。拿 但请注意,它会删除任何 cmets。

        【讨论】:

        • 由于使用了pareditaggressive-indent,我从未发现重新格式化我的profiles.clj 很困难。这种方法的优点是不移除cmets,我有很多。
        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多