【问题标题】:aligning or prettifying code in emacs在 emacs 中对齐或美化代码
【发布时间】:2011-09-07 05:04:48
【问题描述】:

我记得这在 emacs 中是可能的,但不知道如何。如果我有类似的东西:

'abc' => 1, 'abcabc' => 2, 'abcabcabc' => 3,

如何将键、箭头和值与这样的东西对齐?

'abc' => 1, 'abcabc' => 2, 'abcabcabc' => 3,

干杯

【问题讨论】:

    标签: emacs alignment indentation prettify


    【解决方案1】:

    您也可以使用align 命令代替align-regexp。不同之处在于align 根据缓冲区的主要模式自动选择要使用的正则表达式。因此,如果您尝试在 c 模式文件中对齐变量初始化和赋值块,那么它将自动执行正确的操作,而无需考虑所需的正则表达式。可以很方便。

    例如选择以下行:

    int x = 3;
    double y = 9.0;
    unsigned int z = 6;
    const char c = 'A';
    

    然后输入M-x align RET。结果是:

    int          x = 3;
    double       y = 9.0;
    unsigned int z = 6;
    const char   c = 'A';
    

    不过,我应该补充一点,这并不总是有效。如果没有为当前缓冲区的主要模式定义正则表达式,那么对align 的调用将不会执行任何操作。然后,您需要依靠align-regexp。但这并不是一个很大的不便。我实际上经常使用align-regexp。为方便起见,我定义了一个别名来为自己节省一些击键次数:

    (defalias 'ar #'align-regexp)
    

    【讨论】:

    • 酷,有自动对齐模式之类的吗?根据一些神奇的规则或其他东西自动对齐每一行?
    • @s9gf4ult 我不知道自动对齐模式,但是有一个“align-current”命令会尝试智能地选择当前光标位置周围的区域并对齐它。我已将 align-current 映射到一个组合键,这样我就可以在输入完我想要对齐的内容后立即使用它。
    • 另外,请参阅 this 以了解如何添加 align 规则的示例(在这种情况下,使 CoffeeScript 符号值对对齐)。
    • @A.Levy 如果在您的示例中是变量之后的 cmets,则 cmets 也会对齐,这并不酷 (我刚刚找到了这个 align 命令,并坚持使用这样的问题。一个可能的解决方案M-x align-regexp RET = RET)
    【解决方案2】:
    • 选择区域。

    • 输入M-x align-regexp RET

    • 输入= 并回车。

    【讨论】:

    • 这里 M-x 表示 Alt+x 或 Esc 后跟 x。 RET 表示 Enter。
    • 我经常使用align-regexp,但不足以保证它自己的专用组合键,所以我将(defalias 'ar 'align-regexp) 放在我的.emacs 文件中。
    • 这很好,但我在这里遇到了一个问题,它对齐的最小空格数是 两个制表符。即使使用emacs -Q,它也与一个标签对齐。有没有办法将一个空格作为最低对齐方式?
    • @Hi-Angel:是的,我尝试了 A. Levy 回答中的示例,它对我来说效果很好。 (例如,第一行变成int_x__________=_3;(使用_ 表示空格),没有制表符。)至于其余部分:我不知道“邪恶”,但在文件中有制表符是一个非常不便和导致各种问题(比如这个)。我真的不在乎 3 个字节,拥有一个在每个系统上看起来都一样的文件更有价值,并且不包含我看不到的奇怪内容。无论如何,如果您不想将 indent-tabs-mode 全局设置为 nil,您可以在 align-regexp 周围 defadvice 它。
    • 我找到了一个时间,here's the solution,是的,通过 «defadvice»。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 2015-03-29
    • 1970-01-01
    • 2017-08-13
    • 2018-09-28
    相关资源
    最近更新 更多