Fatih Arslan
Fatih Arslan

Reputation: 17117

Remove all arbitary spaces before a line in Vim

I'v written a plugin where it comes to parsing a XML tag. The content inside the tag is indented and when i copy the parsed string into the file it's gettting like:

    Example line
        This is part of the parsed line
        Thats goes one
    End of line

What I want is to remove all spaces in front of these lines, the final text should be

Example line
This is part of the parsed line
Thats goes one
End of line

I've tried to use = but it doesn't work the way I want. How can I do that with minimal key strokes ?

Upvotes: 58

Views: 60953

Answers (9)

Sebastian Müller
Sebastian Müller

Reputation: 581

Yet another way to achieve this is using the the normal command :h :normal-range

:%norm d^

This goes to column 0 in each line (%) and deletes (d) to the first non-white character(^).

This is slightly more to type as the accepted answer, but allows for easy extension if you have a more complex scenario in mind, such as additional un-commenting or so:

:%norm d^I# 

Resulting in:

#Example line
#This is part of the parsed line
#Thats goes one
#End of line

Upvotes: 1

MayurKubavat
MayurKubavat

Reputation: 371

To remove initial spaces and tabs at specified line numbers (E.g. from lines 5 to 10),

:5,10s/^\s*//

Upvotes: 2

Dorian
Dorian

Reputation: 23939

Remove all consecutive spaces: :%s/ */ /g

It was useful to me to go from:

$screen-xs-min:              480px;
$screen-sm-min:              768px;
$screen-md-min:                992px;
$screen-lg-min:                  1200px;

To:

$screen-xs-min: 480px;       
$screen-sm-min: 768px;       
$screen-md-min: 992px;           
$screen-lg-min: 1200px;                                                                                                 

Upvotes: 0

Peter Rincker
Peter Rincker

Reputation: 45117

To format a line to the left I use :left. Use this format an entire file:

:%le

Upvotes: 153

chris
chris

Reputation: 4026

How about this:

:%s/^ *//

Or are you looking for a vim-script solution?

Upvotes: 4

DrAl
DrAl

Reputation: 72636

The search/replace suggested by Lukáš Lalinský or the %le approach in the wikia page is probably the way I'd do it, but as another alternative you could also do:

:%< 99

As a quick way to shift the whole file (%) 99 times to the left.

Upvotes: 0

Randy Morris
Randy Morris

Reputation: 40927

Personally I would visually select the lines with V, then use 99< to push the text as far left as it could go.

Upvotes: 9

Simon
Simon

Reputation: 4585

Just type d followed by w followed by j at the beginning of each line.

Upvotes: 7

Luk&#225;š Lalinsk&#253;
Luk&#225;š Lalinsk&#253;

Reputation: 41306

A simple search/replace s/^\s*// should do the trick, but it's probably not the minimal version.

Upvotes: 13

Related Questions