Command-line ranges

Absolute line numbers

The following command executes :command on lines 23 to 56:

:23,56command

NB: Ranges are inclusive by default.

Line offsets

Line offsets can be used to adjust the start and end lines:

:/foo/-,/bar/+4command    " from the line above next 'foo' to 4 lines below next 'bar'

See :help search-offset.

Line shortcuts

  • . represents the current line but it can also be omitted entirely.
  • $ represents the last line.
  • % represents the whole buffer, it is a shortcut for 1,$.

The two commands below execute :command on every file from the current line to the last line:

:.,$command
:,$command

The command below executes :command on the whole buffer:

:%command

Marks

The command below executes :command on every line from the one containing the f manual mark to the one containing the t manual mark:

:'f,'tcommand

Automatic marks can be used too:

:'<,'>command    " covers the visual selection
:'{,'}command    " covers the current paragraph
:'[,']command    " covers the last changed text

See :help mark-motions.

Mixed ranges

It's possible to combine all of the above into expressive ranges:

:1267,/foo/-2command
:'{,command
:'f,$command

Be creative and don't forget to read :help cmdline-ranges.

Relative line numbers

In the following command the range starts 6 lines above the current line and ends 3 lines below:

:-6,+3command

The commands below execute :command on every line from the first matching from to the first matching to:

:/from/,/to/command    " from next 'from' to next 'to'
:?from?,/to/command    " from previous 'from' to next 'to'
:?from?,?to?command    " from previous 'from' to previous 'to'

See :help search-commands.