--- title: Vim Easyalign html_class: key-codes hljs_languages: [vim] category: Vim --- ## Command mode ### Align by delimiters ```vim :EasyAlign : " preset characters (\=:.,&#|) :EasyAlign | :EasyAlign \ " \ means space ``` ### Align by regexp ```vim :EasyAlign /[:;]+/ ``` ### Specify which ```vim :EasyAlign | " align by 1st `|` :EasyAlign 3 | " align by 3rd `|` :EasyAlign * | " align by all `|`s ``` ### Add options ```vim :EasyAlign * | l4r1 l4 " lN - left_margin r1 " rN - right_margin " spaces to the left/right of `|` ar " a[lrc] - align " align left/right/center dr " d[lrc] - delimiter_align " alignment of the delimiter itself ``` ### Spaces are optional ```vim :EasyAlign * /[;:]+/ l3 :EasyAlign*/[;:]+/l3 ``` ## Examples ### `:EasyAlign = dr` (delimiter_align right) ``` apple = 1 banana += apple cake ||= banana ``` ### `:EasyAlign :` (for json or yaml) ``` url: jdbc:mysql://localhost/test database: test ``` ### `:EasyAlign *|` (markdown tables) ```nohighlight | `` | right align | | `1` | on 1st occurrence | | `2` | on 2nd occurrence (and so on) | ``` ## Interactive mode | `{Visual}` `⏎` | activate for selection | | `ga` `{motion}` | activate for motion/text object | {:.greycode} Then press options (if available), then a delimiter. ### Interactive mode options | `⏎` | Set `alignment` | | `` `4 ⏎` | Set `left_margin` (to the left of the delimiter) | | `` `4 ⏎` | Set `right_margin` | | `↓` | no margin | {:.greycode} ### Example - `gaip` `` `8⏎` `=` - puts 8 spaces before the equal sign ## Also see - [vim-easy-align](https://github.com/junegunn/vim-easy-align) - [Examples](https://github.com/junegunn/vim-easy-align#examples) - [Alignment options](https://github.com/junegunn/vim-easy-align#alignment-options)