vim-easy-align ============== Yet another Vim alignment plugin without too much ambition. This plugin clearly has less features than the other pre-existing ones with the similar goals, but it is simpler, easier to use, and just good enough for the most of the cases. Usage ----- Vim-easy-align defines `:EasyAlign` command in the visual mode. For convenience, it is advised that you define a mapping for triggering it in your `.vimrc`. ```vim vnoremap :EasyAlign ``` With the mapping, you can align selected lines with a few keystrokes. 1. `` key to start EasyAlign command 1. Optional field number (default: 1) - `1` Alignment around 1st delimiter - `2` Alignment around 2nd delimiter - ... - `*` Alignment around all delimiters (recursive) 1. Delimiter (``, `=`, `:`, `.`, `|`, `,`) Alignment rules for the following delimiters have been crafted to meet the most needs. | Delimiter | Description/Use cases | | --------- | ---------------------------------------------------------- | | `` | General alignment around spaces | | `=` | Operators containing equals sign (=, ==, !=, +=, &&=, ...) | | `:` | Suitable for formatting JSON or YAML | | `.` | Multi-line method chaining | | `,` | Multi-line method arguments | | `|` | Table markdown | ### Example command sequences | With visual map | Description | Equivalent command | | ----------------- | ------------------------------------------------- | --------------------- | | `=` | Alignment around 1st equals sign (and the likes) | `:'<,'>EasyAlign =` | | `2=` | Alignment around 2nd equals sign (and the likes) | `:'<,'>EasyAlign 2=` | | `3=` | Alignment around 3rd equals sign (and the likes) | `:'<,'>EasyAlign 3=` | | `*=` | Alignment around all equals signs (and the likes) | `:'<,'>EasyAlign *=` | | `` | Alignment around 1st space | `:'<,'>EasyAlign \ ` | | `2` | Alignment around 2nd space | `:'<,'>EasyAlign 2\ ` | | `:` | Alignment around 1st colon | `:'<,'>EasyAlign :` | | ... | ... | | Defining custom alignment rules ------------------------------- ```vim let g:easy_align_delimiters = { \ '/': { 'pattern': '//*' }, \ 'x': { \ 'pattern': '[xX]', \ 'margin_left': ' <<<', \ 'margin_right': '>>> ', \ 'stick_to_left': 0 \ } \ } ``` Demo ---- [Screencast](https://vimeo.com/63506219) Author ------ [Junegunn Choi](https://github.com/junegunn)