How to insert a block of white spaces starting at the cursor position in vi?

I’d use :%s/^/ /

You could also specify a range of lines :10,15s/^/ /

Or a relative range :.,+5s/^/ /

Or use regular expressions for the locations :/A/,/D/>.

For copying code to paste on SO, I usually use sed from the terminal sed 's/^/ /' filename


Shortcut

I just learned a new trick for this. You enter visual mode v, select the region (with regular movement commands), then hit : which gives you this:

:'<,'>

ready for you to type just the command part of the above commands, the marks '< and '> being automatically set to the bounds of the visual selection.

To select and indent the current paragraph:

vip>

or

vip:>

followed by enter.

Edit:

As requested in the comments, you can also add spaces to the middle of a line using a regex quantifier \{n} on the any meta-character ..

:%s/^.\{14}/& /

This adds a space 14 chars from the left on each line. Of course % could be replaced by any of the above options for specifying the range of an ex command.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)