This cannot be done via regular expressions alone. You'd need a special atom that works like a capture group, but instead captures the column, and then a corresponding atom for recall. Best you can do is matching each row on a subsequent line, for your example
With that, not just lines that match the block's lines on their own are matched, but all occurrences that contain the block's text, though not just with the same vertical alignment, and only the first line's match is highlighted. My SearchHighlighting plugin provides this functionality (mapped to
If that doesn't suffice (you can use the
/c flag on
:substitute to manually verify and acknowledge each match), you have to build your own search (and substitute) infrastructure, i.e. equivalents of
:s, and do the additional assertion for block-alignment in Vimscript.