On Nov 4, 2010, at 12:29 PM, rameo wrote:

> On Nov 4, 5:33 pm, "Benjamin R. Haskell" <[email protected]> wrote:
>> 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
> 
> 
> It still moves the blocks at the right side of current block.
> (please see my previous message)
> 
> Kind regards,
> Rameo

:'<,'>s/\s*\%<10c\s//

Adjust the 10 to what you need.

-- 
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

Reply via email to