> On Nov 4, 5:33 pm, "Benjamin R. Haskell" <v...@benizi.com> 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
No comments:
Post a Comment