How to insert a word/text in the beginning of each line [duplicate]

Just want to insert a word or text at the beginning of range of lines, or the entire file. How do it in vim?


The command:

:%s/^/foo: /

...inserts foo: (including a trailing space) at the beginning of each line.

For a range you can use line numbers:

:10,20s/^/foo: /

...will do it for line 10 to 20.

My preferred way to do it for a range of lines is this: move the cursor to the first line of the range, then enter ma to set the marker a to the current line. Move to the end of the range and enter

:'a,.s/^/foo: /

I've become much more accustomed to use visual blocks for this kind of thing:

  • Move to the start of the first line in your range (gg for first line, ^ to move to the start)
  • <C-V>
  • Move down to the last line in your range
  • Ifoo<ESC>

That would insert foo at the start of each line.