

たとえば、以下は rails の migration コードです。

[code]

    class CreatePosts < ActiveRecord::Migration[6.0]
      def change
        create_table :posts do |t|
          t.string :title, comment: 'タイトル'
          t.text :body, comment: '本文'
          t.integer :user_id, comment: 'ユーザーID'
    
          t.timestamps
        end
      end
    end
    
[/code]

しかし、これではコードが読みにくいので、できることなら以下の様に整形したいと思いました。

[code]

    class CreatePosts < ActiveRecord::Migration[6.0]
      def change
        create_table :posts do |t|
          t.string  :title,   comment: 'タイトル'
          t.text    :body,    comment: '本文'
          t.integer :user_id, comment: 'ユーザーID'
    
          t.timestamps
        end
      end
    end
    
[/code]

しかし、このようなスペースを挿入していく作業は、手で毎回行うにはちょっと辛すぎるかな、と思いました。

# 質問

上記のような、スペース区切りで、縦に揃えたいコードの行たちがあったときに、これをうまく整形する方法はありますか？


CC BY-SA 4.0
2019-09-17T02:25:27.180
59105
2019-09-17T02:41:59.493
754
question
emacs elisp
emacs で、スペース区切りのカラムをいい感じにフォーマットしたい


`M-x align-regex` で整形する方法があるようです。

質問の内容だと`:title`や`:body`にあたる列の指定が少し面倒そうですが。

参考:  
[emacs でソースコードを整形する方法](http://pyopyopyo.hatenablog.com/entry/20061228/p1)

> M-x align-regex を使うと，指定した単語(厳密には正規表現)でテキストを整列できます．  
>  たとえば，変数名 msg で整列したい場合は，M-x align-regex して，"msg" と入力します．
[code]

>     const char* foo(int code) {
>         const char *msg = NULL;
>         switch (code) {
>         case LS_SUCCESS:    msg = "success";break;
>         case LS_NO_RECORD:  msg = "no record";break;
>         case LS_NO_TOKEN:   msg = "no token";break;
>         }
>         return msg;
>     }
>  
[/code]


CC BY-SA 4.0
2019-09-17T02:41:59.493
59106
2019-09-17T02:41:59.493
3060
59105
answer