Thursday, November 4, 2010

Re: removing spaces from start of visual block

On Thu, 4 Nov 2010, Benjamin R. Haskell wrote:

> On Thu, 4 Nov 2010, rameo wrote:
>
>> I find myself often to align blocks of text and thought to create a
>> regex to remove all leading spaces in a block.
>>
>> p.e.
>>
>> text a
>> text b
>> text c
>> text d
>>
>> I would like to select a visual block around these 4 pieces of text
>> and remove all leading spaces, how can I do this?
>> - I can't use "^" because it aligns the block at the beginning of the
>> line.
>>
>
> :'<,'>s/\%V\s*//
> | | | \- \s* - zero or more spaces
> | | \- \%V - matches inside the visual area
> | \- s/// - substitution
> \- '<,'> = visual range
>
> (Can't use \s\+ because it fails if the line contains, but doesn't
> start with, spaces).
>

Also missed another corner case (spaces all through the visual block and
beyond):

VV
text a
.. text b <
.text c <
text d
^^

Before, the '.. text b' would become 'text b', instead of ' text
b'. Fixed by adding a trailing \%V, per suggestion at :help /\%V

:'<,'>s/\%V\s*\%V//

--
Best,
Ben

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments: