Junegunn Choi ad664f696c > rule
2013-04-29 11:27:39 +09:00
2013-04-13 01:07:03 +09:00
2013-04-13 01:07:03 +09:00
2013-04-13 01:07:03 +09:00
2013-04-12 00:22:41 +09:00
2013-04-12 00:22:41 +09:00
2013-04-29 11:27:39 +09:00
2013-04-13 01:07:03 +09:00

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.

vnoremap <silent> <Enter> :EasyAlign<cr>

With the mapping, you can align selected lines with a few keystrokes.

  1. <Enter> key to start EasyAlign command
  2. Optional field number (default: 1)
    • 1 Alignment around 1st delimiter
    • 2 Alignment around 2nd delimiter
    • ...
    • * Alignment around all delimiters (recursive)
  3. Delimiter (<space>, =, :, ., |, ,)

Alignment rules for the following delimiters have been crafted to meet the most needs.

Delimiter Description/Use cases
<space> General alignment around spaces
= Operators containing equals sign (=, ==, !=, +=, &&=, ...)
: Suitable for formatting JSON or YAML
. Multi-line method chaining
, Multi-line method arguments
` `

Example command sequences

With visual map Description Equivalent command
<Enter>= Alignment around 1st equals sign (and the likes) :'<,'>EasyAlign=
<Enter>2= Alignment around 2nd equals sign (and the likes) :'<,'>EasyAlign2=
<Enter>3= Alignment around 3rd equals sign (and the likes) :'<,'>EasyAlign3=
<Enter>*= Alignment around all equals signs (and the likes) :'<,'>EasyAlign*=
<Enter><space> Alignment around 1st space :'<,'>EasyAlign\
<Enter>2<space> Alignment around 2nd space :'<,'>EasyAlign2\
<Enter>: Alignment around 1st colon :'<,'>EasyAlign:
... ...

Defining custom alignment rules

let g:easy_align_delimiters = {
\ '>': { 'pattern': '>>\|=>\|>' },
\ '/': { 'pattern': '//*' },
\ 'x': {
\     'pattern':       '[xX]',
\     'margin_left':   ' <<<',
\     'margin_right':  '>>> ',
\     'stick_to_left': 0
\   }
\ }

Demo

Screencast

Author

Junegunn Choi

Description
🌻 A Vim alignment plugin
vim
Readme 777 KiB
Languages
Vim Script 99.4%
Shell 0.6%