【问题标题】:How to auto align following code?如何自动对齐以下代码?
【发布时间】:2013-05-31 03:03:58
【问题描述】:
get_base_exp(PlayerLv)->
    case PlayerLv of
        1->30;
        2->30;
        3->60;
        4->100;
        5->160;
        6->240;
        7->330;
        8->440;
        9->570;
        10->710;
        11->880;
        12->1060
    end.

致以下:

get_base_exp(PlayerLv)->
    case PlayerLv of
        1  -> 30;
        2  -> 30;
        3  -> 60;
        4  -> 100;
        5  -> 160;
        6  -> 240;
        7  -> 330;
        8  -> 440;
        9  -> 570;
        10 -> 710;
        11 -> 880;
        12 -> 1060
    end.

【问题讨论】:

    标签: emacs


    【解决方案1】:
    1. 选择要对齐的线条
    2. M-x align-regexp RET - RET
    3. M-x 对齐正则表达式 [0-9]+; - RET

    作为完美缩进和对齐代码的小粉丝,我有一个用于 align-regexp 的键控和另一个用于 align 的键控。

    【讨论】:

    • 由于缺少最后一个分号,它只是在最后一行的最后一个数字上失败,否则它非常完美;^)
    • @Seki 最后的分号是我在回答中必须使用align-regexp 的扩展形式的原因。
    • 我应该在发布之前尝试过:-)。无论缺少分号,正确对齐的正则表达式是“[0-9]+;?$”。
    【解决方案2】:

    这是一种方法(我有全局绑定(global-set-key (kbd "C-x \\") 'align-regexp)):

    1. 选择要对齐的 12 条线
    2. C-x \ - RET 对齐箭头
    3. C-x C-x再次选择区域
    4. C-u C-x \ \(>\) RET 1 RET 2 RET n 对齐箭头后的数字

    【讨论】:

    • C-x \ - 无效。当C-x ` and -`未输入时,它会显示C-x \ undefined
    • 仅供参考,我在 mac 上使用 emacs24.3。
    • 对不起,我已经绑定align-regexp 这么长时间了,我没有意识到它不是标准的绑定。我更新了答案。
    • 太棒了!我用C-u M-x align-regexp 做了一些实验,但没能一口气搞定。 2次通过就OK了。而且我不知道 C-x C-x 重新选择区域的技巧。谢谢!
    • 嗨@AlexVorobiev,谢谢你的回答,但选择的答案对我来说更清楚。 C-x C-x 是个好技巧,谢谢。
    【解决方案3】:

    标记大小写表达式并点击C-u C-c C-a(对于erlang-align-arrows)。这接近你想要的:

    get_base_exp(PlayerLv) ->
        case PlayerLv of
            1  ->30;
            2  ->30;
            3  ->60;
            4  ->100;
            5  ->160;
            6  ->240;
            7  ->330;
            8  ->440;
            9  ->570;
            10 ->710;
            11 ->880;
            12 ->1060
        end.
    

    然后您可以移动到第一个分数之前,点击C-SPC,移动到最后一个分数之前,然后点击C-x r t(对于string-rectangle)并让它在每一行的那个位置插入一个空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多